1.1 Подготовка и анализ изначальных данных¶
Импортирование библиотек¶
# для визуализации
import matplotlib.pyplot as plt
%matplotlib inline
# для работы с файлами
import os
# для более удобных словарей
from collections import defaultdict
# проверка версий
print('matplotlib version: 3.10.0')
Анализ данных¶
назначаем пути которые нам нужны
для удобства, я создал двумерный список для оперирования разными датасетами
def get_path(part: str = 'test', data: str = 'images') -> str:
'''функция для получения путя к данным'''
return fr'D:\Helper\MLBazyak\homework\06_01\06_01_hw\data\{part}\{data}'
# части данных
dp = [
['test', 'images', 'labels', 'labels_rw'],
['train', 'images', 'labels', 'labels_rw'],
['valid', 'images', 'labels', 'labels_rw'],
['start_labels', 'labels_test', 'labels_train', 'labels_valid']
]
# тестирование функции get_path()
print(get_path())
print(get_path(dp[0][0], dp[0][1]))
# успешно
D:\Helper\MLBazyak\homework\06_01\06_01_hw\data\test\images D:\Helper\MLBazyak\homework\06_01\06_01_hw\data\test\images
изучаем распределение классов в данных
colors = ['#0f1d87', '#0a64f7', '#6abee6'] # назначаю цвета
fig, axes = plt.subplots(1,3, figsize=(15,5)) # инициализирую кол-во графиков и общий размер
fig.suptitle('Class distribution in folders')
for i in range(3): # прохожу по каждому датасету списком
label_dir = get_path(dp[3][0], dp[3][i+1])
class_stats = defaultdict(int)
for label_file in os.listdir(label_dir):
with open(os.path.join(label_dir, label_file), 'r') as f:
lines = f.readlines()
for line in lines:
class_id = int(line.split()[0])
class_stats[class_id] += 1
print(f'Class statistics in the folder {dp[i][0]}:') # вывожу статистику по классам
for class_id, count in class_stats.items():
print(f'Class {class_id}: {count} objects')
print('-----------------------------------------')
axes[i].bar(class_stats.keys(), class_stats.values(), color=colors[i]) # добавляю часть графика
axes[i].set_title(f'Folder {dp[i][0]}') # название датасета
axes[i].set_xlabel('Class ID') # подпись x
axes[i].set_ylabel('Number of input') # подпись y
axes[i].set_xticks(list(class_stats.keys()))
plt.tight_layout()
plt.show()
после исследования классов в YAT, я могу сказать что:
- 0 - название продукта |
- 1 - цена без скидки |
- 2 - актуальная цена | <=== я должен научить модель находить на фото эти классы
- 3 - вид скидки
у меня нет надобности увеличивать размеры классов (я так думаю)
Для того чтобы модель лучше научилась определять цеу продукта, удалю все остальные классы в разметке, оставляя только актуальную цену
start_lbl = ['labels_test', 'labels_train', 'labels_valid'] # названия папок со старыми разметками
for i in range(3):
label_dir = fr'D:\Helper\MLBazyak\homework\06_01\06_01_hw\data\start_labels\{start_lbl[i]}' # используя f строку инициализирую полный путь к папке
label_rw_dir = get_path(dp[i][0], dp[1][2]) # путь к обновленному файлу
processed = 0
for filename in os.listdir(label_dir): # прохожусь по каждому файлу
filepath = os.path.join(label_dir, filename)
new_filepath = os.path.join(label_rw_dir, filename) # создаю новый путь файла
with open(filepath, 'r') as f:
lines = f.readlines()
filtered_lines = []
for line in lines: # прохожусь по строчкам в файле
parts = line.strip().split() # сплитую строчку по пробелам
if parts and parts[0] == '2': # если строка есть, и начинается с '2' то:
parts[0] = '0' # заменяю 2 на 0
updated_line = ' '.join(parts) + '\n' # собираю строку заново
filtered_lines.append(updated_line) # собираю файл заново
with open(new_filepath, 'w') as f: # сохраняю новый файл с разметкой по 1 классу с ценой
f.writelines(filtered_lines)
processed+=1
print(f'Processing complete for {start_lbl[i]}.')
print(f'Updated markups are saved in the {label_rw_dir} folder.')
print(f'Processed files: {processed}')
print('-----------------------------------------')
Используя YAT, я доразметил и переразметил данные, корректируя и дополняя их
данные изначально были разделены на тестовый, тренировочный и валидационный датасеты, и их я буду использовать для обучения модели
1.2 Подбор алгоритма обучения¶
Архитектура модели¶
YOLOv8n (3.2M)
- task=detect
- mode=train
- model=yolov8n.pt
- data=D:\Helper\MLBazyak\homework\06_01\06_01_hw\data.yaml
- epochs=3
- time=None
- patience=100
- batch=8
- imgsz=640
- save=True
- save_period=-1
- cache=False
- device=None
- workers=8
- project=None
- name=price_detection_v3
- exist_ok=False
- pretrained=True
- optimizer=auto
- verbose=True
- seed=0
- deterministic=True
- single_cls=False
- rect=False
- cos_lr=True
- close_mosaic=10
- resume=False
- amp=True
- fraction=1.0
- profile=False
- freeze=None
- multi_scale=False
- overlap_mask=True
- mask_ratio=4
- dropout=0.0
- val=True
- split=val
- save_json=False
- save_hybrid=False
- conf=None
- iou=0.7
- max_det=300
- half=False
- dnn=False
- plots=True
- source=None
- vid_stride=1
- stream_buffer=False
- visualize=False
- augment=False
- agnostic_nms=False
- classes=None
- retina_masks=False
- embed=None
- show=False
- save_frames=False
- save_txt=False
- save_conf=False
- save_crop=False
- show_labels=True
- show_conf=True
- show_boxes=True
- line_width=None
- format=torchscript
- keras=False
- optimize=False
- int8=False
- dynamic=False
- simplify=True
- opset=None
- workspace=None
- nms=False
- lr0=0.01
- lrf=0.01
- momentum=0.937
- weight_decay=0.0005
- warmup_epochs=3.0
- warmup_momentum=0.8
- warmup_bias_lr=0.1
- box=7.5
- cls=0.5
- dfl=1.5
- pose=12.0
- kobj=1.0
- nbs=64
- hsv_h=0.015
- hsv_s=0.7
- hsv_v=0.4
- degrees=0.0
- translate=0.1
- scale=0.5
- shear=0.0
- perspective=0.0
- flipud=0.0
- fliplr=0.5
- bgr=0.0
- mosaic=1.0
- mixup=0.0
- copy_paste=0.0
- copy_paste_mode=flip
- auto_augment=randaugment
- erasing=0.4
- crop_fraction=1.0
- cfg=None
- tracker=botsort.yaml
- save_dir=runs\detect\price_detection_v3
Я буду использовать эту версию YOLO, тк она хорошо справляется с задачами детекции, а также не сильно требовательная к ресурсам
Гиперпараметры, которые я настроил:
data = r'D:\Helper\MLBazyak\homework\06_01\06_01_hw\data.yaml'| путь к yaml файлуepochs=3| количество эпохimgsz=640| размер изображений в данныхbatch=8| количество батчейcos_lr=True| косинусный планировщик кривой скорости обученииlr0=0.01| скорость обучения
1.3 Импорт данных для обучения нейронной сети¶
Импортирование библиотек¶
# импортируем модуль с YOLO
from ultralytics import YOLO
# библиотека для работы с изображениями
from PIL import Image
# версии библиотек (указаны в requirements.txt файле)
print('ultralytics version:', '8.3.58')
print('PIL version:', '11.1.0')
ultralytics version: 8.3.58 PIL version: 11.1.0
я загрузил данные в следующую структуру:
- --->
data/ - ------>
test/ - --------->
images/ - --------->
labels/ - ------>
train/ - --------->
images/ - --------->
labels/ - ------>
valid/ - --------->
images/ - --------->
labels/
1.4 Обучение нейронной сети¶
Тесты¶
тестирование YOLO модели
model = YOLO('yolov8n.pt') # инициализируем модель YOLOv8 nano
# тестовое обучение
results_test = model.train(
data = r'D:\Helper\MLBazyak\homework\06_01\06_01_hw\data.yaml', # путь к yaml файлу
epochs=3, # количество эпох
imgsz=640, # размер изображений в данных
batch=8, # количество батчей
cos_lr=True, # косинусный планировщик кривой скорости обучении
lr0=0.01, # скорость обучения
name='price_detection_v3' # название эксперимента
)
# инициализация тестовых результатов
result_test = model(r'D:\Helper\MLBazyak\homework\06_01\price_detection\data\test\images\original_five_33_v3_jpg.rf.9e8bde5a93c18446991a3e0f37ef0c76.jpg')
for result in result_test:
img = result.plot()
img = Image.fromarray(img)
img.show()
Для 3 эпох, вполне себе достойный результат:
# валидация модели
model.val()
Обучение модели¶
model = YOLO(r'D:\Helper\MLBazyak\homework\06_01\06_01_hw\runs\detect\price_detection_v3\weights\best.pt') # загружаю модель
# инициализация финальных результатов
results = model.train(
data = r'D:\Helper\MLBazyak\homework\06_01\06_01_hw\data.yaml',
epochs=10,
imgsz=640,
batch=8,
cos_lr=True,
lr0=0.01,
name='price_detection_v4')
Ultralytics 8.3.61 Python-3.11.9 torch-2.5.1+cpu CPU (11th Gen Intel Core(TM) i5-1135G7 2.40GHz)
engine\trainer: task=detect, mode=train, model=D:\Helper\MLBazyak\homework\06_01\06_01_hw\runs\detect\price_detection_v3\weights\best.pt, data=D:\Helper\MLBazyak\homework\06_01\06_01_hw\data.yaml, epochs=10, time=None, patience=100, batch=8, imgsz=640, save=True, save_period=-1, cache=False, device=None, workers=8, project=None, name=price_detection_v42, exist_ok=False, pretrained=True, optimizer=auto, verbose=True, seed=0, deterministic=True, single_cls=False, rect=False, cos_lr=True, close_mosaic=10, resume=False, amp=True, fraction=1.0, profile=False, freeze=None, multi_scale=False, overlap_mask=True, mask_ratio=4, dropout=0.0, val=True, split=val, save_json=False, save_hybrid=False, conf=None, iou=0.7, max_det=300, half=False, dnn=False, plots=True, source=None, vid_stride=1, stream_buffer=False, visualize=False, augment=False, agnostic_nms=False, classes=None, retina_masks=False, embed=None, show=False, save_frames=False, save_txt=False, save_conf=False, save_crop=False, show_labels=True, show_conf=True, show_boxes=True, line_width=None, format=torchscript, keras=False, optimize=False, int8=False, dynamic=False, simplify=True, opset=None, workspace=None, nms=False, lr0=0.01, lrf=0.01, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=7.5, cls=0.5, dfl=1.5, pose=12.0, kobj=1.0, nbs=64, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, bgr=0.0, mosaic=1.0, mixup=0.0, copy_paste=0.0, copy_paste_mode=flip, auto_augment=randaugment, erasing=0.4, crop_fraction=1.0, cfg=None, tracker=botsort.yaml, save_dir=runs\detect\price_detection_v42
from n params module arguments
0 -1 1 464 ultralytics.nn.modules.conv.Conv [3, 16, 3, 2]
1 -1 1 4672 ultralytics.nn.modules.conv.Conv [16, 32, 3, 2]
2 -1 1 7360 ultralytics.nn.modules.block.C2f [32, 32, 1, True]
3 -1 1 18560 ultralytics.nn.modules.conv.Conv [32, 64, 3, 2]
4 -1 2 49664 ultralytics.nn.modules.block.C2f [64, 64, 2, True]
5 -1 1 73984 ultralytics.nn.modules.conv.Conv [64, 128, 3, 2]
6 -1 2 197632 ultralytics.nn.modules.block.C2f [128, 128, 2, True]
7 -1 1 295424 ultralytics.nn.modules.conv.Conv [128, 256, 3, 2]
8 -1 1 460288 ultralytics.nn.modules.block.C2f [256, 256, 1, True]
9 -1 1 164608 ultralytics.nn.modules.block.SPPF [256, 256, 5]
10 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest']
11 [-1, 6] 1 0 ultralytics.nn.modules.conv.Concat [1]
12 -1 1 148224 ultralytics.nn.modules.block.C2f [384, 128, 1]
13 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest']
14 [-1, 4] 1 0 ultralytics.nn.modules.conv.Concat [1]
15 -1 1 37248 ultralytics.nn.modules.block.C2f [192, 64, 1]
16 -1 1 36992 ultralytics.nn.modules.conv.Conv [64, 64, 3, 2]
17 [-1, 12] 1 0 ultralytics.nn.modules.conv.Concat [1]
18 -1 1 123648 ultralytics.nn.modules.block.C2f [192, 128, 1]
19 -1 1 147712 ultralytics.nn.modules.conv.Conv [128, 128, 3, 2]
20 [-1, 9] 1 0 ultralytics.nn.modules.conv.Concat [1]
21 -1 1 493056 ultralytics.nn.modules.block.C2f [384, 256, 1]
22 [15, 18, 21] 1 751507 ultralytics.nn.modules.head.Detect [1, [64, 128, 256]]
Model summary: 225 layers, 3,011,043 parameters, 3,011,027 gradients, 8.2 GFLOPs
Transferred 355/355 items from pretrained weights
Freezing layer 'model.22.dfl.conv.weight'
train: Scanning D:\Helper\MLBazyak\homework\06_01\06_01_hw\data\train\labels.cache... 914 images, 0 backgrounds, 0 corrupt: 100%|██████████| 914/914 [00:00<?, ?it/s] val: Scanning D:\Helper\MLBazyak\homework\06_01\06_01_hw\data\valid\labels.cache... 261 images, 0 backgrounds, 0 corrupt: 100%|██████████| 261/261 [00:00<?, ?it/s]
Plotting labels to runs\detect\price_detection_v42\labels.jpg...
optimizer: 'optimizer=auto' found, ignoring 'lr0=0.01' and 'momentum=0.937' and determining best 'optimizer', 'lr0' and 'momentum' automatically... optimizer: AdamW(lr=0.002, momentum=0.9) with parameter groups 57 weight(decay=0.0), 64 weight(decay=0.0005), 63 bias(decay=0.0) Image sizes 640 train, 640 val Using 0 dataloader workers Logging results to runs\detect\price_detection_v42 Starting training for 10 epochs... Closing dataloader mosaic Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
1/10 0G 1.29 1.055 1.261 2 640: 100%|██████████| 115/115 [12:00<00:00, 6.27s/it]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 17/17 [00:55<00:00, 3.26s/it]
all 261 308 0.976 0.935 0.985 0.55
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
2/10 0G 1.446 1.069 1.376 3 640: 100%|██████████| 115/115 [12:12<00:00, 6.37s/it]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 17/17 [01:08<00:00, 4.02s/it]
all 261 308 0.929 0.935 0.982 0.569
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
3/10 0G 1.413 0.9695 1.334 2 640: 100%|██████████| 115/115 [12:27<00:00, 6.50s/it]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 17/17 [00:58<00:00, 3.42s/it]
all 261 308 0.902 0.922 0.963 0.521
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
4/10 0G 1.397 0.869 1.341 3 640: 100%|██████████| 115/115 [10:38<00:00, 5.55s/it]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 17/17 [00:57<00:00, 3.41s/it]
all 261 308 0.974 0.982 0.991 0.588
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
5/10 0G 1.385 0.8031 1.341 2 640: 100%|██████████| 115/115 [10:46<00:00, 5.62s/it]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 17/17 [00:57<00:00, 3.39s/it]
all 261 308 0.975 0.977 0.993 0.574
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
6/10 0G 1.343 0.7087 1.318 3 640: 100%|██████████| 115/115 [09:16<00:00, 4.84s/it]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 17/17 [00:39<00:00, 2.31s/it]
all 261 308 0.952 0.987 0.99 0.602
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
7/10 0G 1.334 0.6755 1.306 2 640: 100%|██████████| 115/115 [08:00<00:00, 4.18s/it]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 17/17 [00:38<00:00, 2.27s/it]
all 261 308 0.981 0.987 0.994 0.617
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
8/10 0G 1.304 0.6428 1.273 2 640: 100%|██████████| 115/115 [08:00<00:00, 4.18s/it]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 17/17 [00:38<00:00, 2.29s/it]
all 261 308 0.98 0.99 0.993 0.612
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
9/10 0G 1.275 0.6027 1.259 2 640: 100%|██████████| 115/115 [08:00<00:00, 4.18s/it]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 17/17 [00:38<00:00, 2.26s/it]
all 261 308 0.977 0.994 0.993 0.642
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
10/10 0G 1.273 0.5916 1.257 2 640: 100%|██████████| 115/115 [08:00<00:00, 4.18s/it]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 17/17 [00:38<00:00, 2.29s/it]
all 261 308 0.981 0.99 0.994 0.643
10 epochs completed in 1.796 hours. Optimizer stripped from runs\detect\price_detection_v42\weights\last.pt, 6.2MB Optimizer stripped from runs\detect\price_detection_v42\weights\best.pt, 6.2MB Validating runs\detect\price_detection_v42\weights\best.pt... Ultralytics 8.3.61 Python-3.11.9 torch-2.5.1+cpu CPU (11th Gen Intel Core(TM) i5-1135G7 2.40GHz) Model summary (fused): 168 layers, 3,005,843 parameters, 0 gradients, 8.1 GFLOPs
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 17/17 [00:32<00:00, 1.92s/it]
all 261 308 0.981 0.99 0.994 0.642
Speed: 1.8ms preprocess, 109.2ms inference, 0.0ms loss, 0.7ms postprocess per image
Results saved to runs\detect\price_detection_v42
несколько тренировочных батчей
model.val()
Ultralytics 8.3.61 Python-3.11.9 torch-2.5.1+cpu CPU (11th Gen Intel Core(TM) i5-1135G7 2.40GHz) Model summary (fused): 168 layers, 3,005,843 parameters, 0 gradients, 8.1 GFLOPs
val: Scanning D:\Helper\MLBazyak\homework\06_01\06_01_hw\data\valid\labels.cache... 261 images, 0 backgrounds, 0 corrupt: 100%|██████████| 261/261 [00:00<?, ?it/s]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 33/33 [01:02<00:00, 1.89s/it]
all 261 308 0.981 0.99 0.994 0.642
Speed: 4.7ms preprocess, 189.6ms inference, 0.0ms loss, 1.5ms postprocess per image
Results saved to runs\detect\price_detection_v422
ultralytics.utils.metrics.DetMetrics object with attributes:
ap_class_index: array([0])
box: ultralytics.utils.metrics.Metric object
confusion_matrix: <ultralytics.utils.metrics.ConfusionMatrix object at 0x000001BAD7950B90>
curves: ['Precision-Recall(B)', 'F1-Confidence(B)', 'Precision-Confidence(B)', 'Recall-Confidence(B)']
curves_results: [[array([ 0, 0.001001, 0.002002, 0.003003, 0.004004, 0.005005, 0.006006, 0.007007, 0.008008, 0.009009, 0.01001, 0.011011, 0.012012, 0.013013, 0.014014, 0.015015, 0.016016, 0.017017, 0.018018, 0.019019, 0.02002, 0.021021, 0.022022, 0.023023,
0.024024, 0.025025, 0.026026, 0.027027, 0.028028, 0.029029, 0.03003, 0.031031, 0.032032, 0.033033, 0.034034, 0.035035, 0.036036, 0.037037, 0.038038, 0.039039, 0.04004, 0.041041, 0.042042, 0.043043, 0.044044, 0.045045, 0.046046, 0.047047,
0.048048, 0.049049, 0.05005, 0.051051, 0.052052, 0.053053, 0.054054, 0.055055, 0.056056, 0.057057, 0.058058, 0.059059, 0.06006, 0.061061, 0.062062, 0.063063, 0.064064, 0.065065, 0.066066, 0.067067, 0.068068, 0.069069, 0.07007, 0.071071,
0.072072, 0.073073, 0.074074, 0.075075, 0.076076, 0.077077, 0.078078, 0.079079, 0.08008, 0.081081, 0.082082, 0.083083, 0.084084, 0.085085, 0.086086, 0.087087, 0.088088, 0.089089, 0.09009, 0.091091, 0.092092, 0.093093, 0.094094, 0.095095,
0.096096, 0.097097, 0.098098, 0.099099, 0.1001, 0.1011, 0.1021, 0.1031, 0.1041, 0.10511, 0.10611, 0.10711, 0.10811, 0.10911, 0.11011, 0.11111, 0.11211, 0.11311, 0.11411, 0.11512, 0.11612, 0.11712, 0.11812, 0.11912,
0.12012, 0.12112, 0.12212, 0.12312, 0.12412, 0.12513, 0.12613, 0.12713, 0.12813, 0.12913, 0.13013, 0.13113, 0.13213, 0.13313, 0.13413, 0.13514, 0.13614, 0.13714, 0.13814, 0.13914, 0.14014, 0.14114, 0.14214, 0.14314,
0.14414, 0.14515, 0.14615, 0.14715, 0.14815, 0.14915, 0.15015, 0.15115, 0.15215, 0.15315, 0.15415, 0.15516, 0.15616, 0.15716, 0.15816, 0.15916, 0.16016, 0.16116, 0.16216, 0.16316, 0.16416, 0.16517, 0.16617, 0.16717,
0.16817, 0.16917, 0.17017, 0.17117, 0.17217, 0.17317, 0.17417, 0.17518, 0.17618, 0.17718, 0.17818, 0.17918, 0.18018, 0.18118, 0.18218, 0.18318, 0.18418, 0.18519, 0.18619, 0.18719, 0.18819, 0.18919, 0.19019, 0.19119,
0.19219, 0.19319, 0.19419, 0.1952, 0.1962, 0.1972, 0.1982, 0.1992, 0.2002, 0.2012, 0.2022, 0.2032, 0.2042, 0.20521, 0.20621, 0.20721, 0.20821, 0.20921, 0.21021, 0.21121, 0.21221, 0.21321, 0.21421, 0.21522,
0.21622, 0.21722, 0.21822, 0.21922, 0.22022, 0.22122, 0.22222, 0.22322, 0.22422, 0.22523, 0.22623, 0.22723, 0.22823, 0.22923, 0.23023, 0.23123, 0.23223, 0.23323, 0.23423, 0.23524, 0.23624, 0.23724, 0.23824, 0.23924,
0.24024, 0.24124, 0.24224, 0.24324, 0.24424, 0.24525, 0.24625, 0.24725, 0.24825, 0.24925, 0.25025, 0.25125, 0.25225, 0.25325, 0.25425, 0.25526, 0.25626, 0.25726, 0.25826, 0.25926, 0.26026, 0.26126, 0.26226, 0.26326,
0.26426, 0.26527, 0.26627, 0.26727, 0.26827, 0.26927, 0.27027, 0.27127, 0.27227, 0.27327, 0.27427, 0.27528, 0.27628, 0.27728, 0.27828, 0.27928, 0.28028, 0.28128, 0.28228, 0.28328, 0.28428, 0.28529, 0.28629, 0.28729,
0.28829, 0.28929, 0.29029, 0.29129, 0.29229, 0.29329, 0.29429, 0.2953, 0.2963, 0.2973, 0.2983, 0.2993, 0.3003, 0.3013, 0.3023, 0.3033, 0.3043, 0.30531, 0.30631, 0.30731, 0.30831, 0.30931, 0.31031, 0.31131,
0.31231, 0.31331, 0.31431, 0.31532, 0.31632, 0.31732, 0.31832, 0.31932, 0.32032, 0.32132, 0.32232, 0.32332, 0.32432, 0.32533, 0.32633, 0.32733, 0.32833, 0.32933, 0.33033, 0.33133, 0.33233, 0.33333, 0.33433, 0.33534,
0.33634, 0.33734, 0.33834, 0.33934, 0.34034, 0.34134, 0.34234, 0.34334, 0.34434, 0.34535, 0.34635, 0.34735, 0.34835, 0.34935, 0.35035, 0.35135, 0.35235, 0.35335, 0.35435, 0.35536, 0.35636, 0.35736, 0.35836, 0.35936,
0.36036, 0.36136, 0.36236, 0.36336, 0.36436, 0.36537, 0.36637, 0.36737, 0.36837, 0.36937, 0.37037, 0.37137, 0.37237, 0.37337, 0.37437, 0.37538, 0.37638, 0.37738, 0.37838, 0.37938, 0.38038, 0.38138, 0.38238, 0.38338,
0.38438, 0.38539, 0.38639, 0.38739, 0.38839, 0.38939, 0.39039, 0.39139, 0.39239, 0.39339, 0.39439, 0.3954, 0.3964, 0.3974, 0.3984, 0.3994, 0.4004, 0.4014, 0.4024, 0.4034, 0.4044, 0.40541, 0.40641, 0.40741,
0.40841, 0.40941, 0.41041, 0.41141, 0.41241, 0.41341, 0.41441, 0.41542, 0.41642, 0.41742, 0.41842, 0.41942, 0.42042, 0.42142, 0.42242, 0.42342, 0.42442, 0.42543, 0.42643, 0.42743, 0.42843, 0.42943, 0.43043, 0.43143,
0.43243, 0.43343, 0.43443, 0.43544, 0.43644, 0.43744, 0.43844, 0.43944, 0.44044, 0.44144, 0.44244, 0.44344, 0.44444, 0.44545, 0.44645, 0.44745, 0.44845, 0.44945, 0.45045, 0.45145, 0.45245, 0.45345, 0.45445, 0.45546,
0.45646, 0.45746, 0.45846, 0.45946, 0.46046, 0.46146, 0.46246, 0.46346, 0.46446, 0.46547, 0.46647, 0.46747, 0.46847, 0.46947, 0.47047, 0.47147, 0.47247, 0.47347, 0.47447, 0.47548, 0.47648, 0.47748, 0.47848, 0.47948,
0.48048, 0.48148, 0.48248, 0.48348, 0.48448, 0.48549, 0.48649, 0.48749, 0.48849, 0.48949, 0.49049, 0.49149, 0.49249, 0.49349, 0.49449, 0.4955, 0.4965, 0.4975, 0.4985, 0.4995, 0.5005, 0.5015, 0.5025, 0.5035,
0.5045, 0.50551, 0.50651, 0.50751, 0.50851, 0.50951, 0.51051, 0.51151, 0.51251, 0.51351, 0.51451, 0.51552, 0.51652, 0.51752, 0.51852, 0.51952, 0.52052, 0.52152, 0.52252, 0.52352, 0.52452, 0.52553, 0.52653, 0.52753,
0.52853, 0.52953, 0.53053, 0.53153, 0.53253, 0.53353, 0.53453, 0.53554, 0.53654, 0.53754, 0.53854, 0.53954, 0.54054, 0.54154, 0.54254, 0.54354, 0.54454, 0.54555, 0.54655, 0.54755, 0.54855, 0.54955, 0.55055, 0.55155,
0.55255, 0.55355, 0.55455, 0.55556, 0.55656, 0.55756, 0.55856, 0.55956, 0.56056, 0.56156, 0.56256, 0.56356, 0.56456, 0.56557, 0.56657, 0.56757, 0.56857, 0.56957, 0.57057, 0.57157, 0.57257, 0.57357, 0.57457, 0.57558,
0.57658, 0.57758, 0.57858, 0.57958, 0.58058, 0.58158, 0.58258, 0.58358, 0.58458, 0.58559, 0.58659, 0.58759, 0.58859, 0.58959, 0.59059, 0.59159, 0.59259, 0.59359, 0.59459, 0.5956, 0.5966, 0.5976, 0.5986, 0.5996,
0.6006, 0.6016, 0.6026, 0.6036, 0.6046, 0.60561, 0.60661, 0.60761, 0.60861, 0.60961, 0.61061, 0.61161, 0.61261, 0.61361, 0.61461, 0.61562, 0.61662, 0.61762, 0.61862, 0.61962, 0.62062, 0.62162, 0.62262, 0.62362,
0.62462, 0.62563, 0.62663, 0.62763, 0.62863, 0.62963, 0.63063, 0.63163, 0.63263, 0.63363, 0.63463, 0.63564, 0.63664, 0.63764, 0.63864, 0.63964, 0.64064, 0.64164, 0.64264, 0.64364, 0.64464, 0.64565, 0.64665, 0.64765,
0.64865, 0.64965, 0.65065, 0.65165, 0.65265, 0.65365, 0.65465, 0.65566, 0.65666, 0.65766, 0.65866, 0.65966, 0.66066, 0.66166, 0.66266, 0.66366, 0.66466, 0.66567, 0.66667, 0.66767, 0.66867, 0.66967, 0.67067, 0.67167,
0.67267, 0.67367, 0.67467, 0.67568, 0.67668, 0.67768, 0.67868, 0.67968, 0.68068, 0.68168, 0.68268, 0.68368, 0.68468, 0.68569, 0.68669, 0.68769, 0.68869, 0.68969, 0.69069, 0.69169, 0.69269, 0.69369, 0.69469, 0.6957,
0.6967, 0.6977, 0.6987, 0.6997, 0.7007, 0.7017, 0.7027, 0.7037, 0.7047, 0.70571, 0.70671, 0.70771, 0.70871, 0.70971, 0.71071, 0.71171, 0.71271, 0.71371, 0.71471, 0.71572, 0.71672, 0.71772, 0.71872, 0.71972,
0.72072, 0.72172, 0.72272, 0.72372, 0.72472, 0.72573, 0.72673, 0.72773, 0.72873, 0.72973, 0.73073, 0.73173, 0.73273, 0.73373, 0.73473, 0.73574, 0.73674, 0.73774, 0.73874, 0.73974, 0.74074, 0.74174, 0.74274, 0.74374,
0.74474, 0.74575, 0.74675, 0.74775, 0.74875, 0.74975, 0.75075, 0.75175, 0.75275, 0.75375, 0.75475, 0.75576, 0.75676, 0.75776, 0.75876, 0.75976, 0.76076, 0.76176, 0.76276, 0.76376, 0.76476, 0.76577, 0.76677, 0.76777,
0.76877, 0.76977, 0.77077, 0.77177, 0.77277, 0.77377, 0.77477, 0.77578, 0.77678, 0.77778, 0.77878, 0.77978, 0.78078, 0.78178, 0.78278, 0.78378, 0.78478, 0.78579, 0.78679, 0.78779, 0.78879, 0.78979, 0.79079, 0.79179,
0.79279, 0.79379, 0.79479, 0.7958, 0.7968, 0.7978, 0.7988, 0.7998, 0.8008, 0.8018, 0.8028, 0.8038, 0.8048, 0.80581, 0.80681, 0.80781, 0.80881, 0.80981, 0.81081, 0.81181, 0.81281, 0.81381, 0.81481, 0.81582,
0.81682, 0.81782, 0.81882, 0.81982, 0.82082, 0.82182, 0.82282, 0.82382, 0.82482, 0.82583, 0.82683, 0.82783, 0.82883, 0.82983, 0.83083, 0.83183, 0.83283, 0.83383, 0.83483, 0.83584, 0.83684, 0.83784, 0.83884, 0.83984,
0.84084, 0.84184, 0.84284, 0.84384, 0.84484, 0.84585, 0.84685, 0.84785, 0.84885, 0.84985, 0.85085, 0.85185, 0.85285, 0.85385, 0.85485, 0.85586, 0.85686, 0.85786, 0.85886, 0.85986, 0.86086, 0.86186, 0.86286, 0.86386,
0.86486, 0.86587, 0.86687, 0.86787, 0.86887, 0.86987, 0.87087, 0.87187, 0.87287, 0.87387, 0.87487, 0.87588, 0.87688, 0.87788, 0.87888, 0.87988, 0.88088, 0.88188, 0.88288, 0.88388, 0.88488, 0.88589, 0.88689, 0.88789,
0.88889, 0.88989, 0.89089, 0.89189, 0.89289, 0.89389, 0.89489, 0.8959, 0.8969, 0.8979, 0.8989, 0.8999, 0.9009, 0.9019, 0.9029, 0.9039, 0.9049, 0.90591, 0.90691, 0.90791, 0.90891, 0.90991, 0.91091, 0.91191,
0.91291, 0.91391, 0.91491, 0.91592, 0.91692, 0.91792, 0.91892, 0.91992, 0.92092, 0.92192, 0.92292, 0.92392, 0.92492, 0.92593, 0.92693, 0.92793, 0.92893, 0.92993, 0.93093, 0.93193, 0.93293, 0.93393, 0.93493, 0.93594,
0.93694, 0.93794, 0.93894, 0.93994, 0.94094, 0.94194, 0.94294, 0.94394, 0.94494, 0.94595, 0.94695, 0.94795, 0.94895, 0.94995, 0.95095, 0.95195, 0.95295, 0.95395, 0.95495, 0.95596, 0.95696, 0.95796, 0.95896, 0.95996,
0.96096, 0.96196, 0.96296, 0.96396, 0.96496, 0.96597, 0.96697, 0.96797, 0.96897, 0.96997, 0.97097, 0.97197, 0.97297, 0.97397, 0.97497, 0.97598, 0.97698, 0.97798, 0.97898, 0.97998, 0.98098, 0.98198, 0.98298, 0.98398,
0.98498, 0.98599, 0.98699, 0.98799, 0.98899, 0.98999, 0.99099, 0.99199, 0.99299, 0.99399, 0.99499, 0.996, 0.997, 0.998, 0.999, 1]), array([[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661,
0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661,
0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661,
0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661,
0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661,
0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99661, 0.99327, 0.99327, 0.99327, 0.99007, 0.99007, 0.99007, 0.99007, 0.99007, 0.99007, 0.99007, 0.99007, 0.99007,
0.99007, 0.99007, 0.99007, 0.99007, 0.98377, 0.98377, 0.98377, 0.98377, 0.98377, 0.98377, 0.98377, 0.98377, 0.98377, 0.98377, 0.98377, 0.98377, 0.98377, 0.98071, 0.98071, 0.98071, 0.98071, 0.98071, 0.98071,
0.98071, 0.96845, 0.96845, 0.96845, 0.96845, 0.96845, 0.96845, 0.34047, 0.22698, 0.11349, 0]]), 'Recall', 'Precision'], [array([ 0, 0.001001, 0.002002, 0.003003, 0.004004, 0.005005, 0.006006, 0.007007, 0.008008, 0.009009, 0.01001, 0.011011, 0.012012, 0.013013, 0.014014, 0.015015, 0.016016, 0.017017, 0.018018, 0.019019, 0.02002, 0.021021, 0.022022, 0.023023,
0.024024, 0.025025, 0.026026, 0.027027, 0.028028, 0.029029, 0.03003, 0.031031, 0.032032, 0.033033, 0.034034, 0.035035, 0.036036, 0.037037, 0.038038, 0.039039, 0.04004, 0.041041, 0.042042, 0.043043, 0.044044, 0.045045, 0.046046, 0.047047,
0.048048, 0.049049, 0.05005, 0.051051, 0.052052, 0.053053, 0.054054, 0.055055, 0.056056, 0.057057, 0.058058, 0.059059, 0.06006, 0.061061, 0.062062, 0.063063, 0.064064, 0.065065, 0.066066, 0.067067, 0.068068, 0.069069, 0.07007, 0.071071,
0.072072, 0.073073, 0.074074, 0.075075, 0.076076, 0.077077, 0.078078, 0.079079, 0.08008, 0.081081, 0.082082, 0.083083, 0.084084, 0.085085, 0.086086, 0.087087, 0.088088, 0.089089, 0.09009, 0.091091, 0.092092, 0.093093, 0.094094, 0.095095,
0.096096, 0.097097, 0.098098, 0.099099, 0.1001, 0.1011, 0.1021, 0.1031, 0.1041, 0.10511, 0.10611, 0.10711, 0.10811, 0.10911, 0.11011, 0.11111, 0.11211, 0.11311, 0.11411, 0.11512, 0.11612, 0.11712, 0.11812, 0.11912,
0.12012, 0.12112, 0.12212, 0.12312, 0.12412, 0.12513, 0.12613, 0.12713, 0.12813, 0.12913, 0.13013, 0.13113, 0.13213, 0.13313, 0.13413, 0.13514, 0.13614, 0.13714, 0.13814, 0.13914, 0.14014, 0.14114, 0.14214, 0.14314,
0.14414, 0.14515, 0.14615, 0.14715, 0.14815, 0.14915, 0.15015, 0.15115, 0.15215, 0.15315, 0.15415, 0.15516, 0.15616, 0.15716, 0.15816, 0.15916, 0.16016, 0.16116, 0.16216, 0.16316, 0.16416, 0.16517, 0.16617, 0.16717,
0.16817, 0.16917, 0.17017, 0.17117, 0.17217, 0.17317, 0.17417, 0.17518, 0.17618, 0.17718, 0.17818, 0.17918, 0.18018, 0.18118, 0.18218, 0.18318, 0.18418, 0.18519, 0.18619, 0.18719, 0.18819, 0.18919, 0.19019, 0.19119,
0.19219, 0.19319, 0.19419, 0.1952, 0.1962, 0.1972, 0.1982, 0.1992, 0.2002, 0.2012, 0.2022, 0.2032, 0.2042, 0.20521, 0.20621, 0.20721, 0.20821, 0.20921, 0.21021, 0.21121, 0.21221, 0.21321, 0.21421, 0.21522,
0.21622, 0.21722, 0.21822, 0.21922, 0.22022, 0.22122, 0.22222, 0.22322, 0.22422, 0.22523, 0.22623, 0.22723, 0.22823, 0.22923, 0.23023, 0.23123, 0.23223, 0.23323, 0.23423, 0.23524, 0.23624, 0.23724, 0.23824, 0.23924,
0.24024, 0.24124, 0.24224, 0.24324, 0.24424, 0.24525, 0.24625, 0.24725, 0.24825, 0.24925, 0.25025, 0.25125, 0.25225, 0.25325, 0.25425, 0.25526, 0.25626, 0.25726, 0.25826, 0.25926, 0.26026, 0.26126, 0.26226, 0.26326,
0.26426, 0.26527, 0.26627, 0.26727, 0.26827, 0.26927, 0.27027, 0.27127, 0.27227, 0.27327, 0.27427, 0.27528, 0.27628, 0.27728, 0.27828, 0.27928, 0.28028, 0.28128, 0.28228, 0.28328, 0.28428, 0.28529, 0.28629, 0.28729,
0.28829, 0.28929, 0.29029, 0.29129, 0.29229, 0.29329, 0.29429, 0.2953, 0.2963, 0.2973, 0.2983, 0.2993, 0.3003, 0.3013, 0.3023, 0.3033, 0.3043, 0.30531, 0.30631, 0.30731, 0.30831, 0.30931, 0.31031, 0.31131,
0.31231, 0.31331, 0.31431, 0.31532, 0.31632, 0.31732, 0.31832, 0.31932, 0.32032, 0.32132, 0.32232, 0.32332, 0.32432, 0.32533, 0.32633, 0.32733, 0.32833, 0.32933, 0.33033, 0.33133, 0.33233, 0.33333, 0.33433, 0.33534,
0.33634, 0.33734, 0.33834, 0.33934, 0.34034, 0.34134, 0.34234, 0.34334, 0.34434, 0.34535, 0.34635, 0.34735, 0.34835, 0.34935, 0.35035, 0.35135, 0.35235, 0.35335, 0.35435, 0.35536, 0.35636, 0.35736, 0.35836, 0.35936,
0.36036, 0.36136, 0.36236, 0.36336, 0.36436, 0.36537, 0.36637, 0.36737, 0.36837, 0.36937, 0.37037, 0.37137, 0.37237, 0.37337, 0.37437, 0.37538, 0.37638, 0.37738, 0.37838, 0.37938, 0.38038, 0.38138, 0.38238, 0.38338,
0.38438, 0.38539, 0.38639, 0.38739, 0.38839, 0.38939, 0.39039, 0.39139, 0.39239, 0.39339, 0.39439, 0.3954, 0.3964, 0.3974, 0.3984, 0.3994, 0.4004, 0.4014, 0.4024, 0.4034, 0.4044, 0.40541, 0.40641, 0.40741,
0.40841, 0.40941, 0.41041, 0.41141, 0.41241, 0.41341, 0.41441, 0.41542, 0.41642, 0.41742, 0.41842, 0.41942, 0.42042, 0.42142, 0.42242, 0.42342, 0.42442, 0.42543, 0.42643, 0.42743, 0.42843, 0.42943, 0.43043, 0.43143,
0.43243, 0.43343, 0.43443, 0.43544, 0.43644, 0.43744, 0.43844, 0.43944, 0.44044, 0.44144, 0.44244, 0.44344, 0.44444, 0.44545, 0.44645, 0.44745, 0.44845, 0.44945, 0.45045, 0.45145, 0.45245, 0.45345, 0.45445, 0.45546,
0.45646, 0.45746, 0.45846, 0.45946, 0.46046, 0.46146, 0.46246, 0.46346, 0.46446, 0.46547, 0.46647, 0.46747, 0.46847, 0.46947, 0.47047, 0.47147, 0.47247, 0.47347, 0.47447, 0.47548, 0.47648, 0.47748, 0.47848, 0.47948,
0.48048, 0.48148, 0.48248, 0.48348, 0.48448, 0.48549, 0.48649, 0.48749, 0.48849, 0.48949, 0.49049, 0.49149, 0.49249, 0.49349, 0.49449, 0.4955, 0.4965, 0.4975, 0.4985, 0.4995, 0.5005, 0.5015, 0.5025, 0.5035,
0.5045, 0.50551, 0.50651, 0.50751, 0.50851, 0.50951, 0.51051, 0.51151, 0.51251, 0.51351, 0.51451, 0.51552, 0.51652, 0.51752, 0.51852, 0.51952, 0.52052, 0.52152, 0.52252, 0.52352, 0.52452, 0.52553, 0.52653, 0.52753,
0.52853, 0.52953, 0.53053, 0.53153, 0.53253, 0.53353, 0.53453, 0.53554, 0.53654, 0.53754, 0.53854, 0.53954, 0.54054, 0.54154, 0.54254, 0.54354, 0.54454, 0.54555, 0.54655, 0.54755, 0.54855, 0.54955, 0.55055, 0.55155,
0.55255, 0.55355, 0.55455, 0.55556, 0.55656, 0.55756, 0.55856, 0.55956, 0.56056, 0.56156, 0.56256, 0.56356, 0.56456, 0.56557, 0.56657, 0.56757, 0.56857, 0.56957, 0.57057, 0.57157, 0.57257, 0.57357, 0.57457, 0.57558,
0.57658, 0.57758, 0.57858, 0.57958, 0.58058, 0.58158, 0.58258, 0.58358, 0.58458, 0.58559, 0.58659, 0.58759, 0.58859, 0.58959, 0.59059, 0.59159, 0.59259, 0.59359, 0.59459, 0.5956, 0.5966, 0.5976, 0.5986, 0.5996,
0.6006, 0.6016, 0.6026, 0.6036, 0.6046, 0.60561, 0.60661, 0.60761, 0.60861, 0.60961, 0.61061, 0.61161, 0.61261, 0.61361, 0.61461, 0.61562, 0.61662, 0.61762, 0.61862, 0.61962, 0.62062, 0.62162, 0.62262, 0.62362,
0.62462, 0.62563, 0.62663, 0.62763, 0.62863, 0.62963, 0.63063, 0.63163, 0.63263, 0.63363, 0.63463, 0.63564, 0.63664, 0.63764, 0.63864, 0.63964, 0.64064, 0.64164, 0.64264, 0.64364, 0.64464, 0.64565, 0.64665, 0.64765,
0.64865, 0.64965, 0.65065, 0.65165, 0.65265, 0.65365, 0.65465, 0.65566, 0.65666, 0.65766, 0.65866, 0.65966, 0.66066, 0.66166, 0.66266, 0.66366, 0.66466, 0.66567, 0.66667, 0.66767, 0.66867, 0.66967, 0.67067, 0.67167,
0.67267, 0.67367, 0.67467, 0.67568, 0.67668, 0.67768, 0.67868, 0.67968, 0.68068, 0.68168, 0.68268, 0.68368, 0.68468, 0.68569, 0.68669, 0.68769, 0.68869, 0.68969, 0.69069, 0.69169, 0.69269, 0.69369, 0.69469, 0.6957,
0.6967, 0.6977, 0.6987, 0.6997, 0.7007, 0.7017, 0.7027, 0.7037, 0.7047, 0.70571, 0.70671, 0.70771, 0.70871, 0.70971, 0.71071, 0.71171, 0.71271, 0.71371, 0.71471, 0.71572, 0.71672, 0.71772, 0.71872, 0.71972,
0.72072, 0.72172, 0.72272, 0.72372, 0.72472, 0.72573, 0.72673, 0.72773, 0.72873, 0.72973, 0.73073, 0.73173, 0.73273, 0.73373, 0.73473, 0.73574, 0.73674, 0.73774, 0.73874, 0.73974, 0.74074, 0.74174, 0.74274, 0.74374,
0.74474, 0.74575, 0.74675, 0.74775, 0.74875, 0.74975, 0.75075, 0.75175, 0.75275, 0.75375, 0.75475, 0.75576, 0.75676, 0.75776, 0.75876, 0.75976, 0.76076, 0.76176, 0.76276, 0.76376, 0.76476, 0.76577, 0.76677, 0.76777,
0.76877, 0.76977, 0.77077, 0.77177, 0.77277, 0.77377, 0.77477, 0.77578, 0.77678, 0.77778, 0.77878, 0.77978, 0.78078, 0.78178, 0.78278, 0.78378, 0.78478, 0.78579, 0.78679, 0.78779, 0.78879, 0.78979, 0.79079, 0.79179,
0.79279, 0.79379, 0.79479, 0.7958, 0.7968, 0.7978, 0.7988, 0.7998, 0.8008, 0.8018, 0.8028, 0.8038, 0.8048, 0.80581, 0.80681, 0.80781, 0.80881, 0.80981, 0.81081, 0.81181, 0.81281, 0.81381, 0.81481, 0.81582,
0.81682, 0.81782, 0.81882, 0.81982, 0.82082, 0.82182, 0.82282, 0.82382, 0.82482, 0.82583, 0.82683, 0.82783, 0.82883, 0.82983, 0.83083, 0.83183, 0.83283, 0.83383, 0.83483, 0.83584, 0.83684, 0.83784, 0.83884, 0.83984,
0.84084, 0.84184, 0.84284, 0.84384, 0.84484, 0.84585, 0.84685, 0.84785, 0.84885, 0.84985, 0.85085, 0.85185, 0.85285, 0.85385, 0.85485, 0.85586, 0.85686, 0.85786, 0.85886, 0.85986, 0.86086, 0.86186, 0.86286, 0.86386,
0.86486, 0.86587, 0.86687, 0.86787, 0.86887, 0.86987, 0.87087, 0.87187, 0.87287, 0.87387, 0.87487, 0.87588, 0.87688, 0.87788, 0.87888, 0.87988, 0.88088, 0.88188, 0.88288, 0.88388, 0.88488, 0.88589, 0.88689, 0.88789,
0.88889, 0.88989, 0.89089, 0.89189, 0.89289, 0.89389, 0.89489, 0.8959, 0.8969, 0.8979, 0.8989, 0.8999, 0.9009, 0.9019, 0.9029, 0.9039, 0.9049, 0.90591, 0.90691, 0.90791, 0.90891, 0.90991, 0.91091, 0.91191,
0.91291, 0.91391, 0.91491, 0.91592, 0.91692, 0.91792, 0.91892, 0.91992, 0.92092, 0.92192, 0.92292, 0.92392, 0.92492, 0.92593, 0.92693, 0.92793, 0.92893, 0.92993, 0.93093, 0.93193, 0.93293, 0.93393, 0.93493, 0.93594,
0.93694, 0.93794, 0.93894, 0.93994, 0.94094, 0.94194, 0.94294, 0.94394, 0.94494, 0.94595, 0.94695, 0.94795, 0.94895, 0.94995, 0.95095, 0.95195, 0.95295, 0.95395, 0.95495, 0.95596, 0.95696, 0.95796, 0.95896, 0.95996,
0.96096, 0.96196, 0.96296, 0.96396, 0.96496, 0.96597, 0.96697, 0.96797, 0.96897, 0.96997, 0.97097, 0.97197, 0.97297, 0.97397, 0.97497, 0.97598, 0.97698, 0.97798, 0.97898, 0.97998, 0.98098, 0.98198, 0.98298, 0.98398,
0.98498, 0.98599, 0.98699, 0.98799, 0.98899, 0.98999, 0.99099, 0.99199, 0.99299, 0.99399, 0.99499, 0.996, 0.997, 0.998, 0.999, 1]), array([[ 0.53765, 0.5379, 0.67984, 0.75041, 0.78316, 0.81756, 0.83417, 0.84355, 0.85219, 0.85945, 0.86942, 0.87798, 0.88364, 0.88582, 0.89171, 0.89353, 0.90046, 0.90438, 0.90899, 0.91002, 0.91077, 0.91431, 0.91853,
0.92212, 0.92255, 0.92298, 0.92342, 0.92392, 0.92442, 0.92716, 0.92813, 0.92885, 0.93031, 0.93077, 0.93124, 0.9317, 0.9323, 0.93291, 0.93498, 0.93586, 0.93752, 0.93829, 0.93894, 0.93928, 0.93963, 0.93998,
0.94029, 0.94044, 0.94058, 0.94073, 0.94087, 0.94102, 0.94116, 0.94131, 0.94145, 0.94159, 0.94224, 0.94408, 0.94494, 0.94551, 0.9461, 0.94731, 0.94774, 0.948, 0.94825, 0.94851, 0.94876, 0.9492, 0.95053,
0.95068, 0.95084, 0.95099, 0.95115, 0.9513, 0.95146, 0.95161, 0.95177, 0.95192, 0.95239, 0.95289, 0.9534, 0.95541, 0.95614, 0.9566, 0.95693, 0.95726, 0.95758, 0.95788, 0.95793, 0.95798, 0.95804, 0.95809,
0.95814, 0.95819, 0.95824, 0.95829, 0.95834, 0.95839, 0.95844, 0.95849, 0.95855, 0.9586, 0.95865, 0.9587, 0.95875, 0.9588, 0.95885, 0.9589, 0.95895, 0.959, 0.95905, 0.9591, 0.95916, 0.95921, 0.95926,
0.95931, 0.95936, 0.95951, 0.95971, 0.95991, 0.9601, 0.9603, 0.9605, 0.9607, 0.96089, 0.96103, 0.96117, 0.96131, 0.96145, 0.96159, 0.96173, 0.96187, 0.96201, 0.96215, 0.96229, 0.9624, 0.96244, 0.96248,
0.96252, 0.96257, 0.96261, 0.96265, 0.9627, 0.96274, 0.96278, 0.96282, 0.96287, 0.96291, 0.96295, 0.96299, 0.96304, 0.96308, 0.96312, 0.96316, 0.96321, 0.96325, 0.96329, 0.96333, 0.96338, 0.96342, 0.96346,
0.9635, 0.96355, 0.96359, 0.96363, 0.96367, 0.96372, 0.96376, 0.9638, 0.96385, 0.96389, 0.96454, 0.96529, 0.96545, 0.9655, 0.96554, 0.96559, 0.96564, 0.96569, 0.96574, 0.96578, 0.96583, 0.96588, 0.96593,
0.96598, 0.96602, 0.96607, 0.96612, 0.96617, 0.96621, 0.96626, 0.96631, 0.96636, 0.96641, 0.96645, 0.9665, 0.96655, 0.9666, 0.96664, 0.96669, 0.96674, 0.96679, 0.96683, 0.96688, 0.96693, 0.96701, 0.96709,
0.96718, 0.96726, 0.96734, 0.96742, 0.9675, 0.96758, 0.96766, 0.96775, 0.96783, 0.96791, 0.96799, 0.96807, 0.96815, 0.96823, 0.96832, 0.9684, 0.96849, 0.96863, 0.96877, 0.96891, 0.96905, 0.96918, 0.96932,
0.96946, 0.9696, 0.96973, 0.96987, 0.96999, 0.97003, 0.97008, 0.97012, 0.97016, 0.9702, 0.97025, 0.97029, 0.97033, 0.97037, 0.97041, 0.97046, 0.9705, 0.97054, 0.97058, 0.97063, 0.97067, 0.97071, 0.97075,
0.97079, 0.97084, 0.97088, 0.97092, 0.97096, 0.971, 0.97105, 0.97109, 0.97113, 0.97117, 0.97122, 0.97126, 0.9713, 0.97134, 0.97138, 0.97143, 0.97147, 0.97151, 0.9719, 0.97239, 0.97288, 0.97308, 0.9731,
0.97313, 0.97316, 0.97319, 0.97322, 0.97324, 0.97327, 0.9733, 0.97333, 0.97336, 0.97338, 0.97341, 0.97344, 0.97347, 0.9735, 0.97352, 0.97355, 0.97358, 0.97361, 0.97364, 0.97366, 0.97369, 0.97372, 0.97375,
0.97378, 0.9738, 0.97383, 0.97386, 0.97389, 0.97391, 0.97394, 0.97397, 0.974, 0.97403, 0.97405, 0.97408, 0.97411, 0.97414, 0.97417, 0.97419, 0.97422, 0.97425, 0.97428, 0.97431, 0.97433, 0.97436, 0.97439,
0.97442, 0.97445, 0.97447, 0.9745, 0.97453, 0.97456, 0.97459, 0.97467, 0.97485, 0.97503, 0.97521, 0.97539, 0.97557, 0.97575, 0.97593, 0.97611, 0.97627, 0.97641, 0.97656, 0.97671, 0.97685, 0.977, 0.97714,
0.97729, 0.97744, 0.97758, 0.97771, 0.97773, 0.97775, 0.97777, 0.97779, 0.97781, 0.97783, 0.97785, 0.97787, 0.9779, 0.97792, 0.97794, 0.97796, 0.97798, 0.978, 0.97802, 0.97804, 0.97806, 0.97808, 0.9781,
0.97812, 0.97814, 0.97816, 0.97818, 0.9782, 0.97822, 0.97824, 0.97827, 0.97829, 0.97831, 0.97833, 0.97835, 0.97837, 0.97839, 0.97841, 0.97843, 0.97845, 0.97847, 0.97849, 0.97851, 0.97853, 0.97855, 0.97857,
0.97859, 0.97861, 0.97864, 0.97866, 0.97868, 0.9787, 0.97872, 0.97874, 0.97876, 0.97878, 0.9788, 0.97882, 0.97884, 0.97886, 0.97888, 0.9789, 0.97892, 0.97894, 0.97896, 0.97898, 0.979, 0.97903, 0.97905,
0.97907, 0.97909, 0.97911, 0.97913, 0.97915, 0.97917, 0.97919, 0.97921, 0.97923, 0.97925, 0.97928, 0.97931, 0.97934, 0.97938, 0.97941, 0.97945, 0.97948, 0.97952, 0.97955, 0.97959, 0.97962, 0.97966, 0.97969,
0.97973, 0.97976, 0.9798, 0.97983, 0.97987, 0.9799, 0.97994, 0.97997, 0.98001, 0.98004, 0.98007, 0.98011, 0.98014, 0.98018, 0.98021, 0.98025, 0.98028, 0.98032, 0.98035, 0.98039, 0.98042, 0.98046, 0.98049,
0.98053, 0.98056, 0.9806, 0.98063, 0.98066, 0.9807, 0.98073, 0.98077, 0.9808, 0.98088, 0.98108, 0.98129, 0.9815, 0.98171, 0.98192, 0.98212, 0.98233, 0.98233, 0.98221, 0.9821, 0.98199, 0.98188, 0.98177,
0.98166, 0.98155, 0.98143, 0.98132, 0.98121, 0.9811, 0.98099, 0.98088, 0.98076, 0.98064, 0.98052, 0.9804, 0.98028, 0.98016, 0.98004, 0.97991, 0.97979, 0.97967, 0.97955, 0.97943, 0.97931, 0.97918, 0.97917,
0.97924, 0.9793, 0.97937, 0.97944, 0.9795, 0.97957, 0.97964, 0.9797, 0.97977, 0.97983, 0.9799, 0.97997, 0.98003, 0.9801, 0.98017, 0.98023, 0.9803, 0.98037, 0.98043, 0.9805, 0.98056, 0.98063, 0.9807,
0.98074, 0.98078, 0.98082, 0.98086, 0.9809, 0.98094, 0.98098, 0.98102, 0.98106, 0.9811, 0.98114, 0.98118, 0.98122, 0.98126, 0.9813, 0.98134, 0.98138, 0.98142, 0.98146, 0.9815, 0.98154, 0.98158, 0.98162,
0.98166, 0.9817, 0.98174, 0.98178, 0.98182, 0.98186, 0.9819, 0.98194, 0.98198, 0.98202, 0.98206, 0.9821, 0.98214, 0.98218, 0.98222, 0.98226, 0.98231, 0.98239, 0.98247, 0.98255, 0.98263, 0.98271, 0.98279,
0.98287, 0.98295, 0.98304, 0.98312, 0.9832, 0.98328, 0.98336, 0.98344, 0.98352, 0.9836, 0.98368, 0.98376, 0.98384, 0.98392, 0.984, 0.98408, 0.98415, 0.98423, 0.98431, 0.98438, 0.98446, 0.98454, 0.98461,
0.98469, 0.98477, 0.98484, 0.98492, 0.985, 0.98507, 0.98515, 0.98523, 0.9853, 0.98538, 0.98545, 0.98542, 0.98537, 0.98532, 0.98528, 0.98523, 0.98518, 0.98513, 0.98509, 0.98504, 0.98499, 0.98494, 0.9849,
0.98485, 0.9848, 0.98476, 0.98471, 0.98466, 0.98461, 0.98457, 0.98452, 0.98447, 0.98443, 0.98438, 0.98433, 0.98428, 0.98424, 0.98419, 0.98414, 0.98409, 0.98405, 0.984, 0.98395, 0.9839, 0.98386, 0.98372,
0.98319, 0.98266, 0.9824, 0.98372, 0.98364, 0.98356, 0.98348, 0.9834, 0.98332, 0.98324, 0.98316, 0.98308, 0.983, 0.98292, 0.98284, 0.98276, 0.98268, 0.9826, 0.98252, 0.98244, 0.98236, 0.98228, 0.9822,
0.98212, 0.97883, 0.97831, 0.97659, 0.97606, 0.97553, 0.97464, 0.97363, 0.97395, 0.97426, 0.97457, 0.97489, 0.9752, 0.97436, 0.97356, 0.97497, 0.97448, 0.974, 0.97352, 0.96993, 0.96953, 0.96914, 0.96874,
0.96835, 0.96801, 0.96769, 0.96736, 0.96704, 0.96671, 0.96419, 0.96299, 0.96278, 0.96257, 0.96236, 0.96214, 0.96193, 0.96172, 0.96151, 0.96039, 0.95936, 0.95906, 0.95877, 0.95848, 0.95818, 0.95789, 0.95595,
0.95553, 0.95511, 0.95469, 0.95406, 0.95097, 0.94976, 0.94694, 0.94544, 0.94458, 0.94374, 0.93918, 0.93664, 0.93519, 0.93282, 0.93139, 0.92866, 0.9265, 0.92268, 0.91767, 0.91673, 0.9158, 0.91518, 0.91457,
0.91395, 0.9111, 0.91029, 0.90543, 0.89987, 0.89862, 0.89366, 0.89113, 0.88786, 0.88604, 0.88178, 0.8799, 0.87318, 0.8651, 0.86362, 0.8604, 0.85421, 0.84932, 0.84354, 0.84241, 0.8381, 0.82793, 0.82046,
0.81371, 0.81198, 0.8103, 0.80684, 0.79866, 0.79275, 0.786, 0.78058, 0.77092, 0.7603, 0.75701, 0.74981, 0.74263, 0.72811, 0.71838, 0.70771, 0.70344, 0.6858, 0.67751, 0.66167, 0.6536, 0.64636, 0.64209,
0.63851, 0.6261, 0.62113, 0.61888, 0.60567, 0.5972, 0.58083, 0.56414, 0.55675, 0.55397, 0.54177, 0.52699, 0.51527, 0.51046, 0.4867, 0.46599, 0.45688, 0.43112, 0.41487, 0.39723, 0.37895, 0.36204, 0.34645,
0.33088, 0.30454, 0.28338, 0.273, 0.26984, 0.25702, 0.24068, 0.21889, 0.21351, 0.21055, 0.20635, 0.20108, 0.1949, 0.17852, 0.14922, 0.12674, 0.12434, 0.12194, 0.11759, 0.11446, 0.11189, 0.10986, 0.10854,
0.10722, 0.1059, 0.10404, 0.092627, 0.074697, 0.055898, 0.052621, 0.050202, 0.049112, 0.04802, 0.046927, 0.045832, 0.044737, 0.036741, 0.034303, 0.030786, 0.022481, 0.018763, 0.015367, 0.0088917, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]), 'Confidence', 'F1'], [array([ 0, 0.001001, 0.002002, 0.003003, 0.004004, 0.005005, 0.006006, 0.007007, 0.008008, 0.009009, 0.01001, 0.011011, 0.012012, 0.013013, 0.014014, 0.015015, 0.016016, 0.017017, 0.018018, 0.019019, 0.02002, 0.021021, 0.022022, 0.023023,
0.024024, 0.025025, 0.026026, 0.027027, 0.028028, 0.029029, 0.03003, 0.031031, 0.032032, 0.033033, 0.034034, 0.035035, 0.036036, 0.037037, 0.038038, 0.039039, 0.04004, 0.041041, 0.042042, 0.043043, 0.044044, 0.045045, 0.046046, 0.047047,
0.048048, 0.049049, 0.05005, 0.051051, 0.052052, 0.053053, 0.054054, 0.055055, 0.056056, 0.057057, 0.058058, 0.059059, 0.06006, 0.061061, 0.062062, 0.063063, 0.064064, 0.065065, 0.066066, 0.067067, 0.068068, 0.069069, 0.07007, 0.071071,
0.072072, 0.073073, 0.074074, 0.075075, 0.076076, 0.077077, 0.078078, 0.079079, 0.08008, 0.081081, 0.082082, 0.083083, 0.084084, 0.085085, 0.086086, 0.087087, 0.088088, 0.089089, 0.09009, 0.091091, 0.092092, 0.093093, 0.094094, 0.095095,
0.096096, 0.097097, 0.098098, 0.099099, 0.1001, 0.1011, 0.1021, 0.1031, 0.1041, 0.10511, 0.10611, 0.10711, 0.10811, 0.10911, 0.11011, 0.11111, 0.11211, 0.11311, 0.11411, 0.11512, 0.11612, 0.11712, 0.11812, 0.11912,
0.12012, 0.12112, 0.12212, 0.12312, 0.12412, 0.12513, 0.12613, 0.12713, 0.12813, 0.12913, 0.13013, 0.13113, 0.13213, 0.13313, 0.13413, 0.13514, 0.13614, 0.13714, 0.13814, 0.13914, 0.14014, 0.14114, 0.14214, 0.14314,
0.14414, 0.14515, 0.14615, 0.14715, 0.14815, 0.14915, 0.15015, 0.15115, 0.15215, 0.15315, 0.15415, 0.15516, 0.15616, 0.15716, 0.15816, 0.15916, 0.16016, 0.16116, 0.16216, 0.16316, 0.16416, 0.16517, 0.16617, 0.16717,
0.16817, 0.16917, 0.17017, 0.17117, 0.17217, 0.17317, 0.17417, 0.17518, 0.17618, 0.17718, 0.17818, 0.17918, 0.18018, 0.18118, 0.18218, 0.18318, 0.18418, 0.18519, 0.18619, 0.18719, 0.18819, 0.18919, 0.19019, 0.19119,
0.19219, 0.19319, 0.19419, 0.1952, 0.1962, 0.1972, 0.1982, 0.1992, 0.2002, 0.2012, 0.2022, 0.2032, 0.2042, 0.20521, 0.20621, 0.20721, 0.20821, 0.20921, 0.21021, 0.21121, 0.21221, 0.21321, 0.21421, 0.21522,
0.21622, 0.21722, 0.21822, 0.21922, 0.22022, 0.22122, 0.22222, 0.22322, 0.22422, 0.22523, 0.22623, 0.22723, 0.22823, 0.22923, 0.23023, 0.23123, 0.23223, 0.23323, 0.23423, 0.23524, 0.23624, 0.23724, 0.23824, 0.23924,
0.24024, 0.24124, 0.24224, 0.24324, 0.24424, 0.24525, 0.24625, 0.24725, 0.24825, 0.24925, 0.25025, 0.25125, 0.25225, 0.25325, 0.25425, 0.25526, 0.25626, 0.25726, 0.25826, 0.25926, 0.26026, 0.26126, 0.26226, 0.26326,
0.26426, 0.26527, 0.26627, 0.26727, 0.26827, 0.26927, 0.27027, 0.27127, 0.27227, 0.27327, 0.27427, 0.27528, 0.27628, 0.27728, 0.27828, 0.27928, 0.28028, 0.28128, 0.28228, 0.28328, 0.28428, 0.28529, 0.28629, 0.28729,
0.28829, 0.28929, 0.29029, 0.29129, 0.29229, 0.29329, 0.29429, 0.2953, 0.2963, 0.2973, 0.2983, 0.2993, 0.3003, 0.3013, 0.3023, 0.3033, 0.3043, 0.30531, 0.30631, 0.30731, 0.30831, 0.30931, 0.31031, 0.31131,
0.31231, 0.31331, 0.31431, 0.31532, 0.31632, 0.31732, 0.31832, 0.31932, 0.32032, 0.32132, 0.32232, 0.32332, 0.32432, 0.32533, 0.32633, 0.32733, 0.32833, 0.32933, 0.33033, 0.33133, 0.33233, 0.33333, 0.33433, 0.33534,
0.33634, 0.33734, 0.33834, 0.33934, 0.34034, 0.34134, 0.34234, 0.34334, 0.34434, 0.34535, 0.34635, 0.34735, 0.34835, 0.34935, 0.35035, 0.35135, 0.35235, 0.35335, 0.35435, 0.35536, 0.35636, 0.35736, 0.35836, 0.35936,
0.36036, 0.36136, 0.36236, 0.36336, 0.36436, 0.36537, 0.36637, 0.36737, 0.36837, 0.36937, 0.37037, 0.37137, 0.37237, 0.37337, 0.37437, 0.37538, 0.37638, 0.37738, 0.37838, 0.37938, 0.38038, 0.38138, 0.38238, 0.38338,
0.38438, 0.38539, 0.38639, 0.38739, 0.38839, 0.38939, 0.39039, 0.39139, 0.39239, 0.39339, 0.39439, 0.3954, 0.3964, 0.3974, 0.3984, 0.3994, 0.4004, 0.4014, 0.4024, 0.4034, 0.4044, 0.40541, 0.40641, 0.40741,
0.40841, 0.40941, 0.41041, 0.41141, 0.41241, 0.41341, 0.41441, 0.41542, 0.41642, 0.41742, 0.41842, 0.41942, 0.42042, 0.42142, 0.42242, 0.42342, 0.42442, 0.42543, 0.42643, 0.42743, 0.42843, 0.42943, 0.43043, 0.43143,
0.43243, 0.43343, 0.43443, 0.43544, 0.43644, 0.43744, 0.43844, 0.43944, 0.44044, 0.44144, 0.44244, 0.44344, 0.44444, 0.44545, 0.44645, 0.44745, 0.44845, 0.44945, 0.45045, 0.45145, 0.45245, 0.45345, 0.45445, 0.45546,
0.45646, 0.45746, 0.45846, 0.45946, 0.46046, 0.46146, 0.46246, 0.46346, 0.46446, 0.46547, 0.46647, 0.46747, 0.46847, 0.46947, 0.47047, 0.47147, 0.47247, 0.47347, 0.47447, 0.47548, 0.47648, 0.47748, 0.47848, 0.47948,
0.48048, 0.48148, 0.48248, 0.48348, 0.48448, 0.48549, 0.48649, 0.48749, 0.48849, 0.48949, 0.49049, 0.49149, 0.49249, 0.49349, 0.49449, 0.4955, 0.4965, 0.4975, 0.4985, 0.4995, 0.5005, 0.5015, 0.5025, 0.5035,
0.5045, 0.50551, 0.50651, 0.50751, 0.50851, 0.50951, 0.51051, 0.51151, 0.51251, 0.51351, 0.51451, 0.51552, 0.51652, 0.51752, 0.51852, 0.51952, 0.52052, 0.52152, 0.52252, 0.52352, 0.52452, 0.52553, 0.52653, 0.52753,
0.52853, 0.52953, 0.53053, 0.53153, 0.53253, 0.53353, 0.53453, 0.53554, 0.53654, 0.53754, 0.53854, 0.53954, 0.54054, 0.54154, 0.54254, 0.54354, 0.54454, 0.54555, 0.54655, 0.54755, 0.54855, 0.54955, 0.55055, 0.55155,
0.55255, 0.55355, 0.55455, 0.55556, 0.55656, 0.55756, 0.55856, 0.55956, 0.56056, 0.56156, 0.56256, 0.56356, 0.56456, 0.56557, 0.56657, 0.56757, 0.56857, 0.56957, 0.57057, 0.57157, 0.57257, 0.57357, 0.57457, 0.57558,
0.57658, 0.57758, 0.57858, 0.57958, 0.58058, 0.58158, 0.58258, 0.58358, 0.58458, 0.58559, 0.58659, 0.58759, 0.58859, 0.58959, 0.59059, 0.59159, 0.59259, 0.59359, 0.59459, 0.5956, 0.5966, 0.5976, 0.5986, 0.5996,
0.6006, 0.6016, 0.6026, 0.6036, 0.6046, 0.60561, 0.60661, 0.60761, 0.60861, 0.60961, 0.61061, 0.61161, 0.61261, 0.61361, 0.61461, 0.61562, 0.61662, 0.61762, 0.61862, 0.61962, 0.62062, 0.62162, 0.62262, 0.62362,
0.62462, 0.62563, 0.62663, 0.62763, 0.62863, 0.62963, 0.63063, 0.63163, 0.63263, 0.63363, 0.63463, 0.63564, 0.63664, 0.63764, 0.63864, 0.63964, 0.64064, 0.64164, 0.64264, 0.64364, 0.64464, 0.64565, 0.64665, 0.64765,
0.64865, 0.64965, 0.65065, 0.65165, 0.65265, 0.65365, 0.65465, 0.65566, 0.65666, 0.65766, 0.65866, 0.65966, 0.66066, 0.66166, 0.66266, 0.66366, 0.66466, 0.66567, 0.66667, 0.66767, 0.66867, 0.66967, 0.67067, 0.67167,
0.67267, 0.67367, 0.67467, 0.67568, 0.67668, 0.67768, 0.67868, 0.67968, 0.68068, 0.68168, 0.68268, 0.68368, 0.68468, 0.68569, 0.68669, 0.68769, 0.68869, 0.68969, 0.69069, 0.69169, 0.69269, 0.69369, 0.69469, 0.6957,
0.6967, 0.6977, 0.6987, 0.6997, 0.7007, 0.7017, 0.7027, 0.7037, 0.7047, 0.70571, 0.70671, 0.70771, 0.70871, 0.70971, 0.71071, 0.71171, 0.71271, 0.71371, 0.71471, 0.71572, 0.71672, 0.71772, 0.71872, 0.71972,
0.72072, 0.72172, 0.72272, 0.72372, 0.72472, 0.72573, 0.72673, 0.72773, 0.72873, 0.72973, 0.73073, 0.73173, 0.73273, 0.73373, 0.73473, 0.73574, 0.73674, 0.73774, 0.73874, 0.73974, 0.74074, 0.74174, 0.74274, 0.74374,
0.74474, 0.74575, 0.74675, 0.74775, 0.74875, 0.74975, 0.75075, 0.75175, 0.75275, 0.75375, 0.75475, 0.75576, 0.75676, 0.75776, 0.75876, 0.75976, 0.76076, 0.76176, 0.76276, 0.76376, 0.76476, 0.76577, 0.76677, 0.76777,
0.76877, 0.76977, 0.77077, 0.77177, 0.77277, 0.77377, 0.77477, 0.77578, 0.77678, 0.77778, 0.77878, 0.77978, 0.78078, 0.78178, 0.78278, 0.78378, 0.78478, 0.78579, 0.78679, 0.78779, 0.78879, 0.78979, 0.79079, 0.79179,
0.79279, 0.79379, 0.79479, 0.7958, 0.7968, 0.7978, 0.7988, 0.7998, 0.8008, 0.8018, 0.8028, 0.8038, 0.8048, 0.80581, 0.80681, 0.80781, 0.80881, 0.80981, 0.81081, 0.81181, 0.81281, 0.81381, 0.81481, 0.81582,
0.81682, 0.81782, 0.81882, 0.81982, 0.82082, 0.82182, 0.82282, 0.82382, 0.82482, 0.82583, 0.82683, 0.82783, 0.82883, 0.82983, 0.83083, 0.83183, 0.83283, 0.83383, 0.83483, 0.83584, 0.83684, 0.83784, 0.83884, 0.83984,
0.84084, 0.84184, 0.84284, 0.84384, 0.84484, 0.84585, 0.84685, 0.84785, 0.84885, 0.84985, 0.85085, 0.85185, 0.85285, 0.85385, 0.85485, 0.85586, 0.85686, 0.85786, 0.85886, 0.85986, 0.86086, 0.86186, 0.86286, 0.86386,
0.86486, 0.86587, 0.86687, 0.86787, 0.86887, 0.86987, 0.87087, 0.87187, 0.87287, 0.87387, 0.87487, 0.87588, 0.87688, 0.87788, 0.87888, 0.87988, 0.88088, 0.88188, 0.88288, 0.88388, 0.88488, 0.88589, 0.88689, 0.88789,
0.88889, 0.88989, 0.89089, 0.89189, 0.89289, 0.89389, 0.89489, 0.8959, 0.8969, 0.8979, 0.8989, 0.8999, 0.9009, 0.9019, 0.9029, 0.9039, 0.9049, 0.90591, 0.90691, 0.90791, 0.90891, 0.90991, 0.91091, 0.91191,
0.91291, 0.91391, 0.91491, 0.91592, 0.91692, 0.91792, 0.91892, 0.91992, 0.92092, 0.92192, 0.92292, 0.92392, 0.92492, 0.92593, 0.92693, 0.92793, 0.92893, 0.92993, 0.93093, 0.93193, 0.93293, 0.93393, 0.93493, 0.93594,
0.93694, 0.93794, 0.93894, 0.93994, 0.94094, 0.94194, 0.94294, 0.94394, 0.94494, 0.94595, 0.94695, 0.94795, 0.94895, 0.94995, 0.95095, 0.95195, 0.95295, 0.95395, 0.95495, 0.95596, 0.95696, 0.95796, 0.95896, 0.95996,
0.96096, 0.96196, 0.96296, 0.96396, 0.96496, 0.96597, 0.96697, 0.96797, 0.96897, 0.96997, 0.97097, 0.97197, 0.97297, 0.97397, 0.97497, 0.97598, 0.97698, 0.97798, 0.97898, 0.97998, 0.98098, 0.98198, 0.98298, 0.98398,
0.98498, 0.98599, 0.98699, 0.98799, 0.98899, 0.98999, 0.99099, 0.99199, 0.99299, 0.99399, 0.99499, 0.996, 0.997, 0.998, 0.999, 1]), array([[ 0.36811, 0.36833, 0.51584, 0.6017, 0.64496, 0.69298, 0.71719, 0.73117, 0.74424, 0.75539, 0.77093, 0.7845, 0.79359, 0.79711, 0.80669, 0.80968, 0.82114, 0.82768, 0.83543, 0.83718, 0.83845, 0.84447, 0.8517,
0.85789, 0.85863, 0.85937, 0.86014, 0.86101, 0.86188, 0.86665, 0.86835, 0.86962, 0.87217, 0.87298, 0.8738, 0.87462, 0.87568, 0.87675, 0.88042, 0.88198, 0.88493, 0.8863, 0.88746, 0.88808, 0.8887, 0.88932,
0.88989, 0.89015, 0.89041, 0.89067, 0.89093, 0.89118, 0.89144, 0.8917, 0.89196, 0.89222, 0.89338, 0.8967, 0.89825, 0.89928, 0.90035, 0.90255, 0.90332, 0.90379, 0.90425, 0.90472, 0.90518, 0.90598, 0.9084,
0.90869, 0.90897, 0.90925, 0.90953, 0.90982, 0.9101, 0.91038, 0.91066, 0.91095, 0.9118, 0.91273, 0.91366, 0.91735, 0.91871, 0.91956, 0.92017, 0.92077, 0.92137, 0.92193, 0.92202, 0.92212, 0.92221, 0.92231,
0.9224, 0.9225, 0.92259, 0.92269, 0.92278, 0.92287, 0.92297, 0.92306, 0.92316, 0.92325, 0.92335, 0.92344, 0.92354, 0.92363, 0.92372, 0.92382, 0.92391, 0.92401, 0.9241, 0.9242, 0.92429, 0.92439, 0.92448,
0.92457, 0.92467, 0.92495, 0.92532, 0.92569, 0.92605, 0.92642, 0.92679, 0.92716, 0.92752, 0.92778, 0.92804, 0.9283, 0.92856, 0.92882, 0.92909, 0.92935, 0.92961, 0.92987, 0.93013, 0.93033, 0.93041, 0.93049,
0.93057, 0.93065, 0.93073, 0.93081, 0.93089, 0.93097, 0.93105, 0.93113, 0.93121, 0.93129, 0.93137, 0.93145, 0.93153, 0.93161, 0.93169, 0.93177, 0.93184, 0.93192, 0.932, 0.93208, 0.93216, 0.93224, 0.93232,
0.9324, 0.93248, 0.93256, 0.93264, 0.93272, 0.9328, 0.93288, 0.93296, 0.93304, 0.93312, 0.93435, 0.93575, 0.93605, 0.93614, 0.93623, 0.93632, 0.93641, 0.9365, 0.93659, 0.93668, 0.93677, 0.93686, 0.93695,
0.93704, 0.93713, 0.93722, 0.93731, 0.9374, 0.93749, 0.93758, 0.93767, 0.93776, 0.93785, 0.93794, 0.93803, 0.93812, 0.93821, 0.9383, 0.93839, 0.93848, 0.93857, 0.93866, 0.93875, 0.93884, 0.939, 0.93915,
0.9393, 0.93946, 0.93961, 0.93976, 0.93992, 0.94007, 0.94023, 0.94038, 0.94053, 0.94069, 0.94084, 0.94099, 0.94115, 0.9413, 0.94146, 0.94161, 0.94179, 0.94206, 0.94232, 0.94258, 0.94284, 0.9431, 0.94336,
0.94362, 0.94388, 0.94414, 0.9444, 0.94463, 0.94471, 0.94479, 0.94487, 0.94495, 0.94503, 0.94511, 0.94519, 0.94527, 0.94535, 0.94543, 0.94551, 0.94559, 0.94567, 0.94575, 0.94583, 0.94591, 0.94599, 0.94607,
0.94615, 0.94623, 0.94631, 0.94639, 0.94647, 0.94655, 0.94663, 0.94671, 0.94679, 0.94687, 0.94695, 0.94703, 0.94711, 0.94719, 0.94727, 0.94735, 0.94743, 0.94751, 0.94826, 0.94919, 0.95012, 0.9505, 0.95055,
0.9506, 0.95066, 0.95071, 0.95076, 0.95082, 0.95087, 0.95093, 0.95098, 0.95103, 0.95109, 0.95114, 0.95119, 0.95125, 0.9513, 0.95135, 0.95141, 0.95146, 0.95151, 0.95157, 0.95162, 0.95167, 0.95173, 0.95178,
0.95183, 0.95189, 0.95194, 0.95199, 0.95205, 0.9521, 0.95215, 0.95221, 0.95226, 0.95231, 0.95237, 0.95242, 0.95247, 0.95253, 0.95258, 0.95263, 0.95269, 0.95274, 0.95279, 0.95285, 0.9529, 0.95295, 0.95301,
0.95306, 0.95311, 0.95317, 0.95322, 0.95327, 0.95333, 0.95338, 0.95354, 0.95388, 0.95423, 0.95458, 0.95492, 0.95527, 0.95562, 0.95597, 0.95631, 0.95661, 0.95689, 0.95717, 0.95745, 0.95773, 0.95801, 0.95829,
0.95857, 0.95885, 0.95913, 0.95938, 0.95942, 0.95946, 0.9595, 0.95954, 0.95958, 0.95962, 0.95966, 0.9597, 0.95974, 0.95978, 0.95982, 0.95986, 0.9599, 0.95994, 0.95998, 0.96001, 0.96005, 0.96009, 0.96013,
0.96017, 0.96021, 0.96025, 0.96029, 0.96033, 0.96037, 0.96041, 0.96045, 0.96049, 0.96053, 0.96057, 0.96061, 0.96065, 0.96069, 0.96073, 0.96077, 0.96081, 0.96085, 0.96089, 0.96093, 0.96097, 0.96101, 0.96105,
0.96108, 0.96112, 0.96116, 0.9612, 0.96124, 0.96128, 0.96132, 0.96136, 0.9614, 0.96144, 0.96148, 0.96152, 0.96156, 0.9616, 0.96164, 0.96168, 0.96172, 0.96176, 0.9618, 0.96184, 0.96188, 0.96192, 0.96196,
0.962, 0.96204, 0.96208, 0.96212, 0.96216, 0.96219, 0.96223, 0.96227, 0.96231, 0.96235, 0.9624, 0.96247, 0.96253, 0.9626, 0.96267, 0.96274, 0.9628, 0.96287, 0.96294, 0.963, 0.96307, 0.96314, 0.96321,
0.96327, 0.96334, 0.96341, 0.96347, 0.96354, 0.96361, 0.96368, 0.96374, 0.96381, 0.96388, 0.96395, 0.96401, 0.96408, 0.96415, 0.96421, 0.96428, 0.96435, 0.96442, 0.96448, 0.96455, 0.96462, 0.96468, 0.96475,
0.96482, 0.96489, 0.96495, 0.96502, 0.96509, 0.96515, 0.96522, 0.96529, 0.96536, 0.9655, 0.9659, 0.9663, 0.96671, 0.96711, 0.96751, 0.96792, 0.96832, 0.96845, 0.96844, 0.96844, 0.96843, 0.96842, 0.96842,
0.96841, 0.9684, 0.9684, 0.96839, 0.96838, 0.96837, 0.96837, 0.96836, 0.96835, 0.96835, 0.96834, 0.96833, 0.96832, 0.96832, 0.96831, 0.9683, 0.96829, 0.96829, 0.96828, 0.96827, 0.96826, 0.96826, 0.96833,
0.96846, 0.96859, 0.96872, 0.96885, 0.96898, 0.96911, 0.96924, 0.96937, 0.9695, 0.96963, 0.96976, 0.96989, 0.97002, 0.97015, 0.97028, 0.97041, 0.97054, 0.97067, 0.9708, 0.97093, 0.97106, 0.97119, 0.97132,
0.9714, 0.97148, 0.97156, 0.97164, 0.97172, 0.97179, 0.97187, 0.97195, 0.97203, 0.97211, 0.97219, 0.97226, 0.97234, 0.97242, 0.9725, 0.97258, 0.97266, 0.97274, 0.97281, 0.97289, 0.97297, 0.97305, 0.97313,
0.97321, 0.97328, 0.97336, 0.97344, 0.97352, 0.9736, 0.97368, 0.97375, 0.97383, 0.97391, 0.97399, 0.97407, 0.97415, 0.97422, 0.9743, 0.97438, 0.97448, 0.97464, 0.9748, 0.97496, 0.97512, 0.97528, 0.97544,
0.9756, 0.97576, 0.97592, 0.97608, 0.97624, 0.97639, 0.97655, 0.97671, 0.97687, 0.97703, 0.97719, 0.97735, 0.97751, 0.97767, 0.97782, 0.97797, 0.97812, 0.97827, 0.97842, 0.97858, 0.97873, 0.97888, 0.97903,
0.97918, 0.97933, 0.97948, 0.97964, 0.97979, 0.97994, 0.98009, 0.98024, 0.98039, 0.98054, 0.9807, 0.98071, 0.9807, 0.9807, 0.9807, 0.9807, 0.9807, 0.98069, 0.98069, 0.98069, 0.98069, 0.98069, 0.98069,
0.98068, 0.98068, 0.98068, 0.98068, 0.98068, 0.98068, 0.98067, 0.98067, 0.98067, 0.98067, 0.98067, 0.98066, 0.98066, 0.98066, 0.98066, 0.98066, 0.98066, 0.98065, 0.98065, 0.98065, 0.98065, 0.98065, 0.98064,
0.98062, 0.9806, 0.98103, 0.98376, 0.98376, 0.98376, 0.98376, 0.98375, 0.98375, 0.98375, 0.98375, 0.98374, 0.98374, 0.98374, 0.98374, 0.98373, 0.98373, 0.98373, 0.98373, 0.98372, 0.98372, 0.98372, 0.98372,
0.98371, 0.98361, 0.99003, 0.98999, 0.98998, 0.98997, 0.98995, 0.99001, 0.99066, 0.99131, 0.99196, 0.99261, 0.99325, 0.99325, 0.99335, 0.99661, 0.99661, 0.9966, 0.9966, 0.99657, 0.99657, 0.99657, 0.99657,
0.99656, 0.99656, 0.99656, 0.99656, 0.99656, 0.99655, 0.99654, 0.99653, 0.99653, 0.99652, 0.99652, 0.99652, 0.99652, 0.99652, 0.99652, 0.99651, 0.9965, 0.9965, 0.9965, 0.9965, 0.99649, 0.99649, 0.99648,
0.99648, 0.99647, 0.99647, 0.99646, 0.99644, 0.99643, 0.99641, 0.9964, 0.9964, 0.99639, 0.99636, 0.99634, 0.99633, 0.99631, 0.9963, 0.99628, 0.99626, 0.99624, 0.9962, 0.99619, 0.99618, 0.99618, 0.99617,
0.99617, 0.99615, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]), 'Confidence', 'Precision'], [array([ 0, 0.001001, 0.002002, 0.003003, 0.004004, 0.005005, 0.006006, 0.007007, 0.008008, 0.009009, 0.01001, 0.011011, 0.012012, 0.013013, 0.014014, 0.015015, 0.016016, 0.017017, 0.018018, 0.019019, 0.02002, 0.021021, 0.022022, 0.023023,
0.024024, 0.025025, 0.026026, 0.027027, 0.028028, 0.029029, 0.03003, 0.031031, 0.032032, 0.033033, 0.034034, 0.035035, 0.036036, 0.037037, 0.038038, 0.039039, 0.04004, 0.041041, 0.042042, 0.043043, 0.044044, 0.045045, 0.046046, 0.047047,
0.048048, 0.049049, 0.05005, 0.051051, 0.052052, 0.053053, 0.054054, 0.055055, 0.056056, 0.057057, 0.058058, 0.059059, 0.06006, 0.061061, 0.062062, 0.063063, 0.064064, 0.065065, 0.066066, 0.067067, 0.068068, 0.069069, 0.07007, 0.071071,
0.072072, 0.073073, 0.074074, 0.075075, 0.076076, 0.077077, 0.078078, 0.079079, 0.08008, 0.081081, 0.082082, 0.083083, 0.084084, 0.085085, 0.086086, 0.087087, 0.088088, 0.089089, 0.09009, 0.091091, 0.092092, 0.093093, 0.094094, 0.095095,
0.096096, 0.097097, 0.098098, 0.099099, 0.1001, 0.1011, 0.1021, 0.1031, 0.1041, 0.10511, 0.10611, 0.10711, 0.10811, 0.10911, 0.11011, 0.11111, 0.11211, 0.11311, 0.11411, 0.11512, 0.11612, 0.11712, 0.11812, 0.11912,
0.12012, 0.12112, 0.12212, 0.12312, 0.12412, 0.12513, 0.12613, 0.12713, 0.12813, 0.12913, 0.13013, 0.13113, 0.13213, 0.13313, 0.13413, 0.13514, 0.13614, 0.13714, 0.13814, 0.13914, 0.14014, 0.14114, 0.14214, 0.14314,
0.14414, 0.14515, 0.14615, 0.14715, 0.14815, 0.14915, 0.15015, 0.15115, 0.15215, 0.15315, 0.15415, 0.15516, 0.15616, 0.15716, 0.15816, 0.15916, 0.16016, 0.16116, 0.16216, 0.16316, 0.16416, 0.16517, 0.16617, 0.16717,
0.16817, 0.16917, 0.17017, 0.17117, 0.17217, 0.17317, 0.17417, 0.17518, 0.17618, 0.17718, 0.17818, 0.17918, 0.18018, 0.18118, 0.18218, 0.18318, 0.18418, 0.18519, 0.18619, 0.18719, 0.18819, 0.18919, 0.19019, 0.19119,
0.19219, 0.19319, 0.19419, 0.1952, 0.1962, 0.1972, 0.1982, 0.1992, 0.2002, 0.2012, 0.2022, 0.2032, 0.2042, 0.20521, 0.20621, 0.20721, 0.20821, 0.20921, 0.21021, 0.21121, 0.21221, 0.21321, 0.21421, 0.21522,
0.21622, 0.21722, 0.21822, 0.21922, 0.22022, 0.22122, 0.22222, 0.22322, 0.22422, 0.22523, 0.22623, 0.22723, 0.22823, 0.22923, 0.23023, 0.23123, 0.23223, 0.23323, 0.23423, 0.23524, 0.23624, 0.23724, 0.23824, 0.23924,
0.24024, 0.24124, 0.24224, 0.24324, 0.24424, 0.24525, 0.24625, 0.24725, 0.24825, 0.24925, 0.25025, 0.25125, 0.25225, 0.25325, 0.25425, 0.25526, 0.25626, 0.25726, 0.25826, 0.25926, 0.26026, 0.26126, 0.26226, 0.26326,
0.26426, 0.26527, 0.26627, 0.26727, 0.26827, 0.26927, 0.27027, 0.27127, 0.27227, 0.27327, 0.27427, 0.27528, 0.27628, 0.27728, 0.27828, 0.27928, 0.28028, 0.28128, 0.28228, 0.28328, 0.28428, 0.28529, 0.28629, 0.28729,
0.28829, 0.28929, 0.29029, 0.29129, 0.29229, 0.29329, 0.29429, 0.2953, 0.2963, 0.2973, 0.2983, 0.2993, 0.3003, 0.3013, 0.3023, 0.3033, 0.3043, 0.30531, 0.30631, 0.30731, 0.30831, 0.30931, 0.31031, 0.31131,
0.31231, 0.31331, 0.31431, 0.31532, 0.31632, 0.31732, 0.31832, 0.31932, 0.32032, 0.32132, 0.32232, 0.32332, 0.32432, 0.32533, 0.32633, 0.32733, 0.32833, 0.32933, 0.33033, 0.33133, 0.33233, 0.33333, 0.33433, 0.33534,
0.33634, 0.33734, 0.33834, 0.33934, 0.34034, 0.34134, 0.34234, 0.34334, 0.34434, 0.34535, 0.34635, 0.34735, 0.34835, 0.34935, 0.35035, 0.35135, 0.35235, 0.35335, 0.35435, 0.35536, 0.35636, 0.35736, 0.35836, 0.35936,
0.36036, 0.36136, 0.36236, 0.36336, 0.36436, 0.36537, 0.36637, 0.36737, 0.36837, 0.36937, 0.37037, 0.37137, 0.37237, 0.37337, 0.37437, 0.37538, 0.37638, 0.37738, 0.37838, 0.37938, 0.38038, 0.38138, 0.38238, 0.38338,
0.38438, 0.38539, 0.38639, 0.38739, 0.38839, 0.38939, 0.39039, 0.39139, 0.39239, 0.39339, 0.39439, 0.3954, 0.3964, 0.3974, 0.3984, 0.3994, 0.4004, 0.4014, 0.4024, 0.4034, 0.4044, 0.40541, 0.40641, 0.40741,
0.40841, 0.40941, 0.41041, 0.41141, 0.41241, 0.41341, 0.41441, 0.41542, 0.41642, 0.41742, 0.41842, 0.41942, 0.42042, 0.42142, 0.42242, 0.42342, 0.42442, 0.42543, 0.42643, 0.42743, 0.42843, 0.42943, 0.43043, 0.43143,
0.43243, 0.43343, 0.43443, 0.43544, 0.43644, 0.43744, 0.43844, 0.43944, 0.44044, 0.44144, 0.44244, 0.44344, 0.44444, 0.44545, 0.44645, 0.44745, 0.44845, 0.44945, 0.45045, 0.45145, 0.45245, 0.45345, 0.45445, 0.45546,
0.45646, 0.45746, 0.45846, 0.45946, 0.46046, 0.46146, 0.46246, 0.46346, 0.46446, 0.46547, 0.46647, 0.46747, 0.46847, 0.46947, 0.47047, 0.47147, 0.47247, 0.47347, 0.47447, 0.47548, 0.47648, 0.47748, 0.47848, 0.47948,
0.48048, 0.48148, 0.48248, 0.48348, 0.48448, 0.48549, 0.48649, 0.48749, 0.48849, 0.48949, 0.49049, 0.49149, 0.49249, 0.49349, 0.49449, 0.4955, 0.4965, 0.4975, 0.4985, 0.4995, 0.5005, 0.5015, 0.5025, 0.5035,
0.5045, 0.50551, 0.50651, 0.50751, 0.50851, 0.50951, 0.51051, 0.51151, 0.51251, 0.51351, 0.51451, 0.51552, 0.51652, 0.51752, 0.51852, 0.51952, 0.52052, 0.52152, 0.52252, 0.52352, 0.52452, 0.52553, 0.52653, 0.52753,
0.52853, 0.52953, 0.53053, 0.53153, 0.53253, 0.53353, 0.53453, 0.53554, 0.53654, 0.53754, 0.53854, 0.53954, 0.54054, 0.54154, 0.54254, 0.54354, 0.54454, 0.54555, 0.54655, 0.54755, 0.54855, 0.54955, 0.55055, 0.55155,
0.55255, 0.55355, 0.55455, 0.55556, 0.55656, 0.55756, 0.55856, 0.55956, 0.56056, 0.56156, 0.56256, 0.56356, 0.56456, 0.56557, 0.56657, 0.56757, 0.56857, 0.56957, 0.57057, 0.57157, 0.57257, 0.57357, 0.57457, 0.57558,
0.57658, 0.57758, 0.57858, 0.57958, 0.58058, 0.58158, 0.58258, 0.58358, 0.58458, 0.58559, 0.58659, 0.58759, 0.58859, 0.58959, 0.59059, 0.59159, 0.59259, 0.59359, 0.59459, 0.5956, 0.5966, 0.5976, 0.5986, 0.5996,
0.6006, 0.6016, 0.6026, 0.6036, 0.6046, 0.60561, 0.60661, 0.60761, 0.60861, 0.60961, 0.61061, 0.61161, 0.61261, 0.61361, 0.61461, 0.61562, 0.61662, 0.61762, 0.61862, 0.61962, 0.62062, 0.62162, 0.62262, 0.62362,
0.62462, 0.62563, 0.62663, 0.62763, 0.62863, 0.62963, 0.63063, 0.63163, 0.63263, 0.63363, 0.63463, 0.63564, 0.63664, 0.63764, 0.63864, 0.63964, 0.64064, 0.64164, 0.64264, 0.64364, 0.64464, 0.64565, 0.64665, 0.64765,
0.64865, 0.64965, 0.65065, 0.65165, 0.65265, 0.65365, 0.65465, 0.65566, 0.65666, 0.65766, 0.65866, 0.65966, 0.66066, 0.66166, 0.66266, 0.66366, 0.66466, 0.66567, 0.66667, 0.66767, 0.66867, 0.66967, 0.67067, 0.67167,
0.67267, 0.67367, 0.67467, 0.67568, 0.67668, 0.67768, 0.67868, 0.67968, 0.68068, 0.68168, 0.68268, 0.68368, 0.68468, 0.68569, 0.68669, 0.68769, 0.68869, 0.68969, 0.69069, 0.69169, 0.69269, 0.69369, 0.69469, 0.6957,
0.6967, 0.6977, 0.6987, 0.6997, 0.7007, 0.7017, 0.7027, 0.7037, 0.7047, 0.70571, 0.70671, 0.70771, 0.70871, 0.70971, 0.71071, 0.71171, 0.71271, 0.71371, 0.71471, 0.71572, 0.71672, 0.71772, 0.71872, 0.71972,
0.72072, 0.72172, 0.72272, 0.72372, 0.72472, 0.72573, 0.72673, 0.72773, 0.72873, 0.72973, 0.73073, 0.73173, 0.73273, 0.73373, 0.73473, 0.73574, 0.73674, 0.73774, 0.73874, 0.73974, 0.74074, 0.74174, 0.74274, 0.74374,
0.74474, 0.74575, 0.74675, 0.74775, 0.74875, 0.74975, 0.75075, 0.75175, 0.75275, 0.75375, 0.75475, 0.75576, 0.75676, 0.75776, 0.75876, 0.75976, 0.76076, 0.76176, 0.76276, 0.76376, 0.76476, 0.76577, 0.76677, 0.76777,
0.76877, 0.76977, 0.77077, 0.77177, 0.77277, 0.77377, 0.77477, 0.77578, 0.77678, 0.77778, 0.77878, 0.77978, 0.78078, 0.78178, 0.78278, 0.78378, 0.78478, 0.78579, 0.78679, 0.78779, 0.78879, 0.78979, 0.79079, 0.79179,
0.79279, 0.79379, 0.79479, 0.7958, 0.7968, 0.7978, 0.7988, 0.7998, 0.8008, 0.8018, 0.8028, 0.8038, 0.8048, 0.80581, 0.80681, 0.80781, 0.80881, 0.80981, 0.81081, 0.81181, 0.81281, 0.81381, 0.81481, 0.81582,
0.81682, 0.81782, 0.81882, 0.81982, 0.82082, 0.82182, 0.82282, 0.82382, 0.82482, 0.82583, 0.82683, 0.82783, 0.82883, 0.82983, 0.83083, 0.83183, 0.83283, 0.83383, 0.83483, 0.83584, 0.83684, 0.83784, 0.83884, 0.83984,
0.84084, 0.84184, 0.84284, 0.84384, 0.84484, 0.84585, 0.84685, 0.84785, 0.84885, 0.84985, 0.85085, 0.85185, 0.85285, 0.85385, 0.85485, 0.85586, 0.85686, 0.85786, 0.85886, 0.85986, 0.86086, 0.86186, 0.86286, 0.86386,
0.86486, 0.86587, 0.86687, 0.86787, 0.86887, 0.86987, 0.87087, 0.87187, 0.87287, 0.87387, 0.87487, 0.87588, 0.87688, 0.87788, 0.87888, 0.87988, 0.88088, 0.88188, 0.88288, 0.88388, 0.88488, 0.88589, 0.88689, 0.88789,
0.88889, 0.88989, 0.89089, 0.89189, 0.89289, 0.89389, 0.89489, 0.8959, 0.8969, 0.8979, 0.8989, 0.8999, 0.9009, 0.9019, 0.9029, 0.9039, 0.9049, 0.90591, 0.90691, 0.90791, 0.90891, 0.90991, 0.91091, 0.91191,
0.91291, 0.91391, 0.91491, 0.91592, 0.91692, 0.91792, 0.91892, 0.91992, 0.92092, 0.92192, 0.92292, 0.92392, 0.92492, 0.92593, 0.92693, 0.92793, 0.92893, 0.92993, 0.93093, 0.93193, 0.93293, 0.93393, 0.93493, 0.93594,
0.93694, 0.93794, 0.93894, 0.93994, 0.94094, 0.94194, 0.94294, 0.94394, 0.94494, 0.94595, 0.94695, 0.94795, 0.94895, 0.94995, 0.95095, 0.95195, 0.95295, 0.95395, 0.95495, 0.95596, 0.95696, 0.95796, 0.95896, 0.95996,
0.96096, 0.96196, 0.96296, 0.96396, 0.96496, 0.96597, 0.96697, 0.96797, 0.96897, 0.96997, 0.97097, 0.97197, 0.97297, 0.97397, 0.97497, 0.97598, 0.97698, 0.97798, 0.97898, 0.97998, 0.98098, 0.98198, 0.98298, 0.98398,
0.98498, 0.98599, 0.98699, 0.98799, 0.98899, 0.98999, 0.99099, 0.99199, 0.99299, 0.99399, 0.99499, 0.996, 0.997, 0.998, 0.999, 1]), array([[ 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675,
0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675,
0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675,
0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675,
0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675,
0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675,
0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675,
0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675,
0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675,
0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675,
0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675,
0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675,
0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675,
0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675,
0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675,
0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675,
0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675,
0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675,
0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675,
0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675,
0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99675, 0.99661, 0.99638, 0.99616, 0.99594, 0.99572, 0.99549,
0.99527, 0.99505, 0.99483, 0.99461, 0.99438, 0.99416, 0.99394, 0.99372, 0.99349, 0.99325, 0.99301, 0.99277, 0.99253, 0.99229, 0.99205, 0.99181, 0.99157, 0.99133, 0.99108, 0.99084, 0.9906, 0.99036, 0.99026,
0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026,
0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026,
0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026,
0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026,
0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99026, 0.99017, 0.99008, 0.98999, 0.98989, 0.9898, 0.98971, 0.98961, 0.98952, 0.98943, 0.98933, 0.98924, 0.98915,
0.98905, 0.98896, 0.98887, 0.98877, 0.98868, 0.98858, 0.98849, 0.9884, 0.9883, 0.98821, 0.98812, 0.98802, 0.98793, 0.98784, 0.98774, 0.98765, 0.98756, 0.98746, 0.98737, 0.98728, 0.98718, 0.98709, 0.98682,
0.98578, 0.98474, 0.98377, 0.98367, 0.98352, 0.98336, 0.9832, 0.98304, 0.98289, 0.98273, 0.98257, 0.98241, 0.98226, 0.9821, 0.98194, 0.98178, 0.98163, 0.98147, 0.98131, 0.98115, 0.981, 0.98084, 0.98068,
0.98052, 0.97411, 0.96686, 0.96354, 0.96252, 0.9615, 0.95979, 0.95779, 0.95779, 0.95779, 0.95779, 0.95779, 0.95779, 0.95616, 0.95455, 0.95425, 0.95332, 0.9524, 0.95148, 0.94467, 0.94392, 0.94318, 0.94243,
0.94169, 0.94105, 0.94044, 0.93983, 0.93922, 0.9386, 0.93388, 0.93164, 0.93124, 0.93085, 0.93045, 0.93006, 0.92966, 0.92927, 0.92888, 0.92679, 0.92488, 0.92434, 0.92379, 0.92325, 0.92271, 0.92216, 0.9186,
0.91782, 0.91705, 0.91628, 0.91512, 0.90947, 0.90726, 0.90214, 0.89943, 0.89788, 0.89637, 0.88821, 0.88369, 0.88112, 0.87694, 0.87442, 0.86963, 0.86587, 0.85923, 0.85061, 0.84901, 0.84742, 0.84636, 0.84532,
0.84427, 0.83943, 0.83535, 0.8272, 0.81797, 0.8159, 0.80775, 0.80364, 0.79834, 0.7954, 0.78856, 0.78555, 0.77491, 0.76227, 0.75997, 0.75501, 0.74553, 0.73811, 0.72942, 0.72772, 0.72132, 0.70638, 0.69558,
0.68593, 0.68348, 0.6811, 0.67623, 0.66481, 0.65666, 0.64745, 0.64013, 0.62723, 0.61329, 0.60903, 0.59976, 0.59062, 0.57247, 0.56053, 0.54764, 0.54254, 0.52183, 0.5123, 0.4944, 0.48545, 0.4775, 0.47286,
0.46898, 0.45571, 0.45046, 0.4481, 0.43438, 0.42572, 0.40927, 0.39289, 0.38576, 0.38309, 0.37152, 0.35776, 0.34705, 0.3427, 0.32162, 0.30378, 0.29608, 0.27479, 0.26173, 0.24784, 0.23377, 0.22103, 0.20952,
0.19824, 0.17962, 0.16508, 0.15808, 0.15596, 0.14746, 0.1368, 0.1229, 0.11952, 0.11766, 0.11504, 0.11178, 0.10797, 0.098009, 0.080624, 0.067657, 0.066293, 0.064926, 0.062467, 0.060703, 0.05926, 0.058122, 0.057384,
0.056646, 0.055908, 0.054877, 0.048562, 0.038798, 0.028753, 0.027021, 0.025747, 0.025174, 0.0246, 0.024027, 0.023454, 0.02288, 0.018714, 0.017451, 0.015634, 0.011368, 0.0094703, 0.007743, 0.0044657, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]), 'Confidence', 'Recall']]
fitness: np.float64(0.6773448912867279)
keys: ['metrics/precision(B)', 'metrics/recall(B)', 'metrics/mAP50(B)', 'metrics/mAP50-95(B)']
maps: array([ 0.64216])
names: {0: 'price'}
plot: True
results_dict: {'metrics/precision(B)': np.float64(0.9806932022771747), 'metrics/recall(B)': np.float64(0.9895192811376727), 'metrics/mAP50(B)': np.float64(0.9940392811349407), 'metrics/mAP50-95(B)': np.float64(0.6421566257480376), 'fitness': np.float64(0.6773448912867279)}
save_dir: WindowsPath('runs/detect/price_detection_v422')
speed: {'preprocess': 4.699068507928958, 'inference': 189.56299120438965, 'loss': 0.0, 'postprocess': 1.4932950337727864}
task: 'detect'
Проверка¶
photos = [r'D:\Helper\MLBazyak\homework\06_01\06_01_hw\data\test\images\original_five_237_v4_jpg.rf.ea11992f01fc8a1a9d3e8fa1891c6f98.jpg',
r'D:\Helper\MLBazyak\homework\06_01\06_01_hw\test2.jpg',
r'D:\Helper\MLBazyak\homework\06_01\06_01_hw\data\test\images\original_five_1381_v4_jpg.rf.f83985d20e2111de4666d99b99083109.jpg',
r'D:\Helper\MLBazyak\homework\06_01\06_01_hw\data\test\images\original_magnit_179_v4_jpg.rf.d83b2ab287821a7b6f6f1c8e1927696e.jpg',
r'D:\Helper\MLBazyak\homework\06_01\06_01_hw\test1.png']
for photo in photos:
result_fin = model(photo)
for result in result_fin:
img = result.plot()
img = Image.fromarray(img)
img.show()
image 1/1 D:\Helper\MLBazyak\homework\06_01\06_01_hw\data\test\images\original_five_237_v4_jpg.rf.ea11992f01fc8a1a9d3e8fa1891c6f98.jpg: 480x640 1 price, 78.8ms Speed: 3.0ms preprocess, 78.8ms inference, 0.7ms postprocess per image at shape (1, 3, 480, 640) image 1/1 D:\Helper\MLBazyak\homework\06_01\06_01_hw\test2.jpg: 640x576 1 price, 134.2ms Speed: 3.6ms preprocess, 134.2ms inference, 0.5ms postprocess per image at shape (1, 3, 640, 576) image 1/1 D:\Helper\MLBazyak\homework\06_01\06_01_hw\data\test\images\original_five_1381_v4_jpg.rf.f83985d20e2111de4666d99b99083109.jpg: 480x640 4 prices, 84.9ms Speed: 2.0ms preprocess, 84.9ms inference, 1.0ms postprocess per image at shape (1, 3, 480, 640) image 1/1 D:\Helper\MLBazyak\homework\06_01\06_01_hw\data\test\images\original_magnit_179_v4_jpg.rf.d83b2ab287821a7b6f6f1c8e1927696e.jpg: 480x640 1 price, 156.1ms Speed: 2.2ms preprocess, 156.1ms inference, 1.2ms postprocess per image at shape (1, 3, 480, 640) image 1/1 D:\Helper\MLBazyak\homework\06_01\06_01_hw\test1.png: 448x640 2 prices, 4394.3ms Speed: 8.0ms preprocess, 4394.3ms inference, 4.0ms postprocess per image at shape (1, 3, 448, 640)
я сделал несколько фотографий ценников в местной Пятерочке, для проверки на них модели (фото 3 & 5)
OCR¶
Я использовал Tesseract и EasyOCR не так давно для пет проекта, и если
я могу доверять информации из Интернета, EasyOCR быстрый и более новый OCR инструмент
Импортирование библиотек¶
import easyocr
print(f'EasyOCR version: {easyocr.__version__}')
EasyOCR version: 1.7.2
ocr = easyocr.Reader(['en']) # инициализирую OCR модель (english немного лучше распознает цифры)
Объединяю 2 модели¶
Импортирование библиотек¶
# библиотека для работы с фото
import cv2
# библиотека с регулярными выражениями
import re
print('opencv-python version:', cv2.__version__)
opencv-python version: 4.10.0
Создание функций¶
Для завершения этого модуля, я думаю нужно:
- найти bb's для картинки
- обрезать картинку по bb's
- в обрезанной картинке распознать текст используя OCR модель
может быть я буду использовать рег. выражения для структурирования вывода
пути
model = YOLO(r'D:\Helper\MLBazyak\homework\06_01\06_01_hw\Helps\runs\detect\price_detection_v42\weights\best.pt') # загружаю свою модель
img = r'D:\Helper\MLBazyak\homework\06_01\06_01_hw\test2.jpg' # путь к фотографии
model.val()
def rec_price(det_model: YOLO = model,
ocr: easyocr.Reader = ocr,
img_dir: str = img):
'''
Процедура для обнаружения и распознавания цен на изображении.
Args:
- det_model (YOLO): Модель YOLO для обнаружения bounding box'ов цен.
- ocr (easyocr.Reader): Модель OCR для распознавания текста.
- img_dir (str): Путь к изображению, на котором нужно найти цену.
Returns:
list: Функция отображает изображение с обнаруженными ценами и возвращает список с определенными ценами
'''
image = cv2.imread(img_dir)
res = det_model(image)
image_ocr = cv2.imread(img_dir, cv2.IMREAD_GRAYSCALE)
_, binary_image = cv2.threshold(image_ocr, 100, 255, cv2.THRESH_BINARY)
image_ocr = cv2.equalizeHist(binary_image)
prices = []
for result in res:
boxes = result.boxes.xyxy.cpu().numpy()
for box in boxes:
x1, y1, x2, y2 = map(int, box)
correct = (x2-x1)*0.28
print(correct)
x2 = int(x2-correct)
crop = image_ocr[y1:y2, x1:x2]
# --------------------------------------------
# plt.figure(figsize=(5, 5))
# plt.imshow(crop, cmap='gray')
# plt.title("Cropped Image") # отображение обрезанной части картинки
# plt.axis('off')
# plt.show()
# --------------------------------------------
ocr_res = ocr.readtext(crop, allowlist='0123456789')
price = None
for detection in ocr_res:
price = detection[1]
confidence = detection[2]
match = re.search(r'\d+[\.,]?\d*', price)
if match:
price = match.group()
print(f'Price: {price}\nConfidence: {confidence:.2f}')
break
if price is not None:
cv2.rectangle(image, (x1,y1), (x2+int(correct),y2), (255, 97, 0), 2) # выделение изначального бокса
cv2.rectangle(image, (x1,y1), (x2,y2), (97, 255, 0), 2) # выделение инпута в ocr
cv2.putText(image, price + 'rub', (x1,y1-10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (255, 97, 0), 2)
prices.append(price)
img_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
pil_img = Image.fromarray(img_rgb)
pil_img.show()
return prices
Тестирование моей функции
(Я специально оставил фотографии, где все работает не идеально, чтобы вы могли увидеть, над чем можно поработать)
photos = [r'D:\Helper\MLBazyak\homework\06_01\06_01_hw\data\test\images\original_five_237_v4_jpg.rf.ea11992f01fc8a1a9d3e8fa1891c6f98.jpg',
r'D:\Helper\MLBazyak\homework\06_01\06_01_hw\data\test\images\original_magnit_982_v4_jpg.rf.da3cb4317478a837da79b6a3f7512d0a.jpg',
r'D:\Helper\MLBazyak\homework\06_01\06_01_hw\data\test\images\original_magnit_65_v4_jpg.rf.756fc91f6651425b06f55aaa81510428.jpg',
r'D:\Helper\MLBazyak\homework\06_01\06_01_hw\test2.jpg',
r'D:\Helper\MLBazyak\homework\06_01\06_01_hw\data\test\images\original_five_1381_v4_jpg.rf.f83985d20e2111de4666d99b99083109.jpg',
r'D:\Helper\MLBazyak\homework\06_01\06_01_hw\data\test\images\original_magnit_179_v4_jpg.rf.d83b2ab287821a7b6f6f1c8e1927696e.jpg',
r'D:\Helper\MLBazyak\homework\06_01\06_01_hw\test1.png']
for photo in photos:
rec_price(img_dir=photo)
print('--------------------------------')
0: 480x640 1 price, 92.8ms Speed: 4.7ms preprocess, 92.8ms inference, 1.0ms postprocess per image at shape (1, 3, 480, 640) 94.36000000000001 Price: 449 Confidence: 1.00 -------------------------------- 0: 480x640 2 prices, 84.1ms Speed: 2.7ms preprocess, 84.1ms inference, 2.4ms postprocess per image at shape (1, 3, 480, 640) 38.92 Price: 64 Confidence: 1.00 37.800000000000004 -------------------------------- 0: 480x640 4 prices, 68.4ms Speed: 1.0ms preprocess, 68.4ms inference, 1.0ms postprocess per image at shape (1, 3, 480, 640) 17.360000000000003 13.440000000000001 16.520000000000003 17.080000000000002 -------------------------------- 0: 640x576 1 price, 1102.7ms Speed: 28.5ms preprocess, 1102.7ms inference, 28.6ms postprocess per image at shape (1, 3, 640, 576) 37.52 Price: 89 Confidence: 1.00 -------------------------------- 0: 480x640 4 prices, 130.2ms Speed: 2.5ms preprocess, 130.2ms inference, 0.9ms postprocess per image at shape (1, 3, 480, 640) 28.000000000000004 30.240000000000002 29.400000000000002 10.360000000000001 -------------------------------- 0: 480x640 1 price, 461.5ms Speed: 5.5ms preprocess, 461.5ms inference, 2.0ms postprocess per image at shape (1, 3, 480, 640) 34.440000000000005 Price: 329 Confidence: 0.90 -------------------------------- 0: 448x640 2 prices, 570.9ms Speed: 11.6ms preprocess, 570.9ms inference, 1.0ms postprocess per image at shape (1, 3, 448, 640) 71.96000000000001 49.56 --------------------------------
Результаты: